Zum Inhalt springen

ParamByName


Hoeen

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

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...