Datenbanken

Borland Database Engine

Parametrisierte Queries

Wie können Parameter an Queries übergeben werden?

Frage

Um eine Variable an eine Query übergeben zu können, muß zunächst eine Query geschrieben werden, die eine Variable verwendet.

Als Beispiel sei die nachfolgende Query angeführt:

Select Test."FName", Test."Salary Of Employee"
From Test
Where Test."Salary of Employee" > :val

Hierbei ist darauf zu achten, daß dem "Salary of Employee" der Datenbankname "Test." vorangestellt wird. Ansonsten resultiert der Fehler "Capability Not Supported".

Im gezeigten Beispiel ist der Name der Variablen "val".

Als nächstes wird das Parameter-Property der TQuery-Komponente bearbeitet und "val" auf den gewünschten Wert gesetzt. Da es sich im Beispiel um einen Integer-Wert handelt, muß dieser entsprechend konvertiert werden. Dazu ist ein Code einzufügen, wenn die Angabe über ein TEdit-Feld eingegeben werden soll:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   Query1->Close();
 
   Query1->ParamByName(„val“).AsInteger = StrToInt(Edit1->Text);
 
   Query1->Open;
}

Zur Vorsicht sollte dieser Code in einen TRY-EXCEPT-Block gekapselt werden, daß die Konvertierung des Textes in einen Integerwert eine Exception auslösen kann.

Analog kann ein LIKE in eine Query eingebettet werden. Der entsprechende SQL-Code soll beispielhaft so aussehen:

  SELECT * FROM CUSTOMER
  WHERE Company LIKE :CompanyName

Der Handler für die Eingabe des Wertes könnte dann folgendes Ausehen haben:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Query1->Close;
 
  Query1->ParamByName('CompanyName').AsString = Edit1.Text + '%';
 
  Query1->Open;
}

Lösung





Sachgebiet


© 2009-2012 by Alojado Publishing. Alle Rechte vorbehalten. Ausgewiesene Marken gehören ihren jeweiligen Eigentümern.
Mit der Benutzung dieser Seite erkennen Sie die Nutzungsbedingungen und die Datenschutzerklärung an. Der Betreiber übernimmt keine Haftung für den Inhalt verlinkter externer Internetseiten.
Seite erzeugt 2012-05-20 02:53:01 von textarchiv.alojado.de