Veröffentlicht 12. September 200222 j 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 ?????
12. September 200222 j 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?
12. September 200222 j Autor 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:
12. September 200222 j 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)
16. September 200222 j Autor 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..."); }
17. September 200222 j Autor Hallo, mit grossen Zahlen funk schon jetzt ;-) Jetz habe ich auch fest gestelt dass, die Buttons nur dan nicht funk wenn im Dialog kein sIdentNr vorhande ist oder mehrmals, aber warum weis ich nicht ;-(
17. September 200222 j Setzt mal einen Breakpoint auf die erste Zeile der Button-Methode, und prüfe mit dem Debugger, warum nichts geschieht.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.