bigpoint Geschrieben 12. September 2002 Geschrieben 12. September 2002 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 ????? Zitieren
Klotzkopp Geschrieben 12. September 2002 Geschrieben 12. September 2002 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? Zitieren
bigpoint Geschrieben 12. September 2002 Autor Geschrieben 12. September 2002 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: Zitieren
bigpoint Geschrieben 12. September 2002 Autor Geschrieben 12. September 2002 mit die toten Butttons habe ich schon :marine Zitieren
Klotzkopp Geschrieben 12. September 2002 Geschrieben 12. September 2002 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) Zitieren
bigpoint Geschrieben 16. September 2002 Autor Geschrieben 16. September 2002 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..."); } Zitieren
bigpoint Geschrieben 17. September 2002 Autor Geschrieben 17. September 2002 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 ;-( Zitieren
Klotzkopp Geschrieben 17. September 2002 Geschrieben 17. September 2002 Setzt mal einen Breakpoint auf die erste Zeile der Button-Methode, und prüfe mit dem Debugger, warum nichts geschieht. Zitieren
Empfohlene Beiträge
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.