Veröffentlicht 11. Februar 200223 j 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.
12. Februar 200223 j 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?
12. Februar 200223 j 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.
12. Februar 200223 j 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.