Hoeen Geschrieben 11. Februar 2002 Geschrieben 11. Februar 2002 Ich habe in einem Datenbankprogramm folgende Funktion: int TFrExport::TranslateLand(AnsiString land) { int key = -1; QrLand->ParamByName("pland")->AsString = land; QrLand->Open(); if (!QrLand->IsEmpty()) { // oha, hier haben wir ein paar key = QrLand->FieldByName("lalanr")->AsInteger; } else { // nix gefunden } QrLand->Close(); QrExport->ParamByName("lanr")->AsInteger = key; return key; } Diese Funktion such in der Datenbanktabelle alle Länder raus und gibt ihnen eine Zahl, den Key. Jedoch soll nicht nur der Name des Landes, sonder auch der Code (für Deutschland jetzt BRD) den Key bekommen! Ich möchte gerne, dass 'QrLand->ParamByName' nicht nur mit 'pland' sondern auch mit 'cland' definiert wird. Kann 'ParamByName' auf zwei Werte setzen??? Ich hoffe, ihr konntet verstehen, was das Problem ist. Zitieren
Hoeen Geschrieben 12. Februar 2002 Autor Geschrieben 12. Februar 2002 Ok, Ok, vielleicht alles ein wenig doof beschrieben. Deswegen jetzt anders: Es geht um eine 'Und'-Aweisung. Wer kenn sich damit aus? Also QrLand soll zweimal definiert werden. Einmal mit 'ParamByName("pland")->AsString = land' und mit 'ParamByName("cland")->AsString = land' . Ich hoffe ihr konntet mir soweit folgen. Das erste ist die deutsche Bezeichnung der Länder ('England', 'Frankreich',...), Das zweite der Code ('Gb', 'Fr'). Dieser wird dann in key = QrLand->FieldByName("lalanr")->AsInteger; die Nummer aus der Datenbank zugewiesen. Wie kann man jetzt die 'Und'-Anweisung schreiben? Oder geht das nicht? Normalerweise geht das in C++ doch mit || , oder? Zitieren
Klotzkopp Geschrieben 12. Februar 2002 Geschrieben 12. Februar 2002 Es scheint mir, als ob Du eine parametrierte Datenbankabfrage machst. Das logische oder, das Du brauchst, ist aber auf der Ebene der Abfrage notwendig, nicht auf Ebene der Programmiersprache. Was ist denn das für eine Klasse, von der QrLand eine Instanz ist? Vielleicht unterstützt diese Klasse Abfragen mit mehrfachen Parametern. Wenn nicht, dann könntest Du, wenn die erste Abfrage nichts gebracht hat (also in deinem else-Zweig), eine zweite Abfrage (also wieder mit ParamByName, Open usw.) starten, aber diesmal cland als Parameter setzen. Zitieren
Hoeen Geschrieben 12. Februar 2002 Autor Geschrieben 12. Februar 2002 Also das mit dem 'else' habe ich auch schon ausprobiert. Ich aber ein Denkfehler drin. Ich hab's jetzt aber. Ich habe im Query etwas verändert. Da steht jetzt: select * from land where laname like :pland or lacode like :pland . Ausserdem habe ich in der Funktion noch etwas verändert: QrLand->ParamByName("pland")->AsString = "%"+land+"%"; Und jetzt funzt es! Aber danke für die Hilfe. 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.