Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Parameter zur Query hinzufügen (https://www.delphipraxis.net/23008-parameter-zur-query-hinzufuegen.html)

barnti 27. Mai 2004 14:58


Parameter zur Query hinzufügen
 
Hallo,

Ich arbeite mit mysql und möchte einer Query zur Laufzeit einen Parameter zuweisen, um eine Master-Detail-Beziehung zu etablieren. Ich schaffe es einfach nicht den Parameter hinzuzufügen!

Delphi-Quellcode:
...
Query.Close;
Query.Prepare;
Query.Params.AddParam(TParam(KeyField)); // wobei KeyField das Schlüsselfeld aus
Query.UnPrepare;                        // anderen Tabelle ist.
Query.SQL.Text;
Query.Open;
Was mache ich falsch?

Leuselator 27. Mai 2004 15:37

Re: Parameter zur Query hinzufügen
 
Das kann so nicht klappen, da die wesentliche Arbeitsgrundlage der Query das in ihrer "Text"-Eigenschaft hinterlegte SQL-Statement ist. Wenn dort nicht schon ein Parameter an sinnvoller Stelle angelegt ist (mit: ":Parametername" - ohne Anführungszeichen), dann würde auf Deine Art einfach ein Parameter hinten "angehangen" werden, was ein ungültiges SQL-Statement ergeben würde.
Versuch es mal so:
Delphi-Quellcode:
  Query.Close;
  Query.SQL.Clear; //löschen des alten SQL-Statements
  Query.SQL.Add('   SELECT *  -- oder Feldliste angeben                  ');
  Query.SQL.Add('     FROM DetaillTabelle A                              ');
  Query.SQL.Add('INNER JOIN MasterTabelle B                               ');
  Query.SQL.Add('       ON B.'+KeyField.FieldName+' = A.FremdSchlüsselFeld');
  Query.SQL.Add('    WHERE DeineBedingung                                ');
  Query.Open;
"DetaillTabelle", "Mastertabelle" und "FremdSchlüsselfeld" mußt Du natürlich durch die richtigen Tabellen- bzw. Feldnamen ersetzen, ebenso wie "DeineBedingung" durch eine sinnvolle Einschränkung zu ersetzen oder ganz wegzulassen ist.

Gruß

barnti 27. Mai 2004 15:52

Re: Parameter zur Query hinzufügen
 
Hallo,

ok, mein Fehler. Ich erstelle jetzt einfach ein Statement mit Parameter. So kann ich diesen auch benutzen.

Danke Leuselator!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz