Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

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?

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.