Zum Inhalt springen

Problem bei Sybase-DB-Zugriff (war: Hilfe)


bigpoint

Empfohlene Beiträge

Hilfe

Ich habe ein Progi geschrieben der mit einem Datenbank Sybase zusammen arbeitet der liest ein Wert aus dem Prog dann sucht im DB und die Werte ausgibt nun wenn ich aber ein Wert mit 099999 eingebe funk es nicht und wenn nur 9999 dann geht’s im DB ist auch nur 99999 aber der Wert ist als long und es ist doch egal ob ich 0 vorne schreibe oder nicht ?? weiter gesehen habe ich noch drei Buttons die wenn gefunden sollen entweder lösche oder usw. die sind aber tot auch beim Debug reagieren und die Methode ich eigentlich ganz simpel also void lalalla(); die nicht wenn ich den Wert 9999 eingebe bei allen anderen funk ;-(

Hat jemand eine Idee warum ?????

Link zu diesem Kommentar
Auf anderen Seiten teilen

Als erstes möchte ich Dich bitten, demnächst einen Betreff zu wählen, der Dein Problem beschreibt. "Hilfe" sucht hier in etwa jeder zweite, der einen Thread aufmacht.

Zweitens wäre es nett, wenn Du nicht sämtliche Satzzeichen am Ende Deines Beitrags konzentrieren würdest ;). Es ist kaum zu erkennen, was Du meinst. Ein paar Fragezeichen am Ende weniger, dafür ein paar Punkte und Kommate mittendrin mehr, und gleich wird die Hilfsbereitschaft der anderen Benutzer steigern.

Aber zum Eigentlichen (soweit ich das herauslesen konnte):

Ist es jetzt 9.999 oder 99.999?

Wie wertest Du die eingegebenen Daten aus?

Was meinst Du mit "tot"? ist der Button disabled (also grau), oder geschieht nur nichts, wenn man draufklickt?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Klotzkopp

Vieln Dank für den Typ und sorry für die sämtliche Satzzeichen am Ende war nicht ironisch gemeint nein es ist nicht 9.99 und nicht 99.99 wo ich auch kein Unterschied sehe sondern 9999 ohne kommer, und so werte ich die Daten aus:

GetDlgItemText(IDC_IdentNr, sIdentNr); sIdentNr.TrimLeft(); sIdentNr.TrimRight();

GetDlgItemText(IDC_Nachname, sNachname); sNachname.TrimLeft(); sNachname.TrimRight();

GetDlgItemText(IDC_Vorname, sVorname); sVorname.TrimLeft(); sVorname.TrimRight();

GetDlgItemText(IDC_PLZ, sPLZ); sPLZ.TrimLeft(); sPLZ.TrimRight();

GetDlgItemText(IDC_Ort, sOrt); sOrt.TrimLeft(); sOrt.TrimRight();

sQuerry.Format("(IDENTKZ = %d)", m_lStatus);

if (sIdentNr.GetLength() > 0) sQuerry += " AND (IDENTNR LIKE '" + sIdentNr + "')";

if (sNachname.GetLength() > 0) sQuerry += " AND (NACHNAME LIKE '" + sNachname + "')";

if (sVorname.GetLength() > 0) sQuerry += " AND (VORNAME LIKE '" + sVorname + "')";

if (sPLZ.GetLength() > 0) sQuerry += " AND (PLZ LIKE '" + sPLZ + "')";

if (sOrt.GetLength() > 0) sQuerry += " AND (ORT LIKE '" + sOrt + "')";

und es geschieht nur nichts, wenn man auf dem Button draufklickt aber nur bei der Zahl

:confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Um welches Feld handelt es sich denn? IDENTNR oder PLZ? Jedenfalls könnte es daran liegen, dass Du LIKE verwendest, wodurch m.W. ein Stringvergleich gemacht wird. Und da macht die führende Null durchaus einen Unterschied.

Versuch bitte mal, bei dem betreffenden Feld die einschließenden Hochkommata wegzulassen, und statt LIKE = zu verwenden:

if (sPLZ.GetLength() > 0) sQuerry += " AND (PLZ = " + sPLZ + ")";

(falls PLZ das long-Feld ist)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Klotzkopp

Um welches Feld handelt es sich denn? IDENTNR oder PLZ? Jedenfalls könnte es daran liegen, dass Du LIKE verwendest, wodurch m.W. ein Stringvergleich gemacht wird. Und da macht die führende Null durchaus einen Unterschied.

Versuch bitte mal, bei dem betreffenden Feld die einschließenden Hochkommata wegzulassen, und statt LIKE = zu verwenden:

if (sPLZ.GetLength() > 0) sQuerry += " AND (PLZ = " + sPLZ + ")";

(falls PLZ das long-Feld ist)

Klotzkopp Du bist genial ;-) der nimmt die 0 jetzt problemlos, aber die Buttons sind nach wie vor tot dh. man kann sie klicken aber er spring nicht rein ;-( auch größere Zahlen wie zb. Die 300200115 obwohl sie in DB stehen findet er nicht da der Quellcode von löschen

void CVPDlg::OnVPLoeschen()

{

CString sVPID;

CString sIdentNr;

CString sNachname;

CString sVorname;

CString sPLZ;

CString sOrt;

CString sStrasse;

CString sNummer;

CString sInstitution;

CString sAnrede;

CString sTitel;

GetDlgItemText(IDC_VPID, sVPID);

GetDlgItemText(IDC_IdentNr, sIdentNr);

GetDlgItemText(IDC_Nachname, sNachname);

GetDlgItemText(IDC_Vorname, sVorname);

GetDlgItemText(IDC_PLZ, sPLZ);

GetDlgItemText(IDC_Ort, sOrt);

GetDlgItemText(IDC_Strasse, sStrasse);

GetDlgItemText(IDC_Nummer, sNummer);

GetDlgItemText(IDC_Institution, sInstitution);

GetDlgItemText(IDC_Anrede, sAnrede);

GetDlgItemText(IDC_Titel, sTitel);

//VP gewählt

if (atof(sVPID) <= 0)

{ MessageBox("Bitte zuerst Arzt/Apotheke auswählen [VP-ID]", "Auswahlfehler");

return;

}

//Sicherheitsabfrage

switch (m_lStatus)

{ case 0: sMsg.Format (IDS_TEXT8, sVPID, sIdentNr); break;

case 3: sMsg.Format (IDS_TEXT9, sVPID, sIdentNr); break;

}

if (MessageBox(sMsg, "Sicherheitsabfrage", MB_YESNO) != IDYES) return;

//VP Löschen

SetWork(1, "Vertragspartner wird gelöscht..." );

TRY

{ sMsg.Format("DELETE FROM VERTRAGSPARTNER WHERE VP_ID = %s", sVPID);

m_pDatenbank->ExecuteSQL(sMsg);

MessageBox("Der Datzensatz wurde fehlerfrei gelöscht." , MB_OK);

//Anzahl Vertragspartner

SetAnzahl();

ClearReposition(); //Feldinhalte löschen

}

CATCH(CDBException, e)

{ MessageBox (GetsText(IDS_TEXT1, e), "Fehler Datenbank öffnen",MB_ICONSTOP);

e->Delete();

}

END_CATCH

SetWork(0, "Bereit...");

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...