Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Variablen als Parameter übergeben? (https://www.delphipraxis.net/64086-variablen-als-parameter-uebergeben.html)

Loki77 27. Feb 2006 09:49

Datenbank: Paradox • Version: 7 • Zugriff über: Query

Variablen als Parameter übergeben?
 
Morgen!
Wie kann ich den Inhalt von zwei Edit-komponenten als Parameter in
eine Query-Komponente übergeben?
Mal allgemein:
Delphi-Quellcode:
procedure TfrmMain.AddClick(Sender: TObject);
begin
qryMain.Close;
qryMain.SQL.Clear;
// Hier die Query Anweisung:
qryMain.SQL.Add('UPDATE Tabelle SET Feld1 =??? , Feld2 =??? );
//                                 (parameter0) (parameter1)    

qryMain.Params[0].DataType := ftInteger;
qryMain.Params[1].DataType := ftInteger;
qryMain.Params[0].AsInteger := StrToInt(edtFeld1.Text);
qryMain.Params[1].AsInteger := StrToInt(edtFeld2.Text);
qryMain.ExecSQL;
qryMain.Close;
qryMain.SQL.Clear;
qryMain.SQL.Add('SELECT Feld1, Feld2 FROM Tabelle;');
qryMain.Open;
DBGrid1.Refresh;
end;
Brauche nur die Syntax für die Query-Anweisung.
Frage: Muss die Parameter-Definition VOR der Anweisung stehen?
Gruss + Danke, Loki.

mkinzler 27. Feb 2006 09:58

Re: Variablen als Parameter übergeben?
 
Delphi-Quellcode:
qryMain.SQL.Add('UPDATE Tabelle SET Feld1 =:feld1, Feld2 = :feld2' );
qryMain.ParamByName('feld1').Value bzw as<Typ> (asInteger)

Zitat:

Frage: Muss die Parameter-Definition VOR der Anweisung stehen?
danach, sonst findert er sie nicht!

Loki77 27. Feb 2006 10:11

Re: Variablen als Parameter übergeben?
 
Danke, wird so gehen.
Aber wie funktioniert die übergabe mit Parameter By Index,
nicht ParamByName?
Loki.

mkinzler 27. Feb 2006 10:18

Re: Variablen als Parameter übergeben?
 
Delphi-Quellcode:
qryMain.Params.Items[0].Value; bzw as<Typ>;
.
Delphi-Quellcode:
die verkürzte Form qryMain.Params[0].Value
müsste aber auch gehen.

Loki77 27. Feb 2006 10:21

Re: Variablen als Parameter übergeben?
 
Ja, das war mir klar, aber wie sieht das in der Query-Anweisung aus?
(muss mich mal klarer ausdrücken....)
Gruss Loki.

mkinzler 27. Feb 2006 10:22

Re: Variablen als Parameter übergeben?
 
Genauso.

Loki77 27. Feb 2006 10:30

Re: Variablen als Parameter übergeben?
 
Also
Delphi-Quellcode:
qryMain.SQL.Add('UPDATE Tabelle SET Feld1, Feld2' );
qryMain.Params[0].DataType := ftInteger;
qryMain.Params[1].DataType := ftInteger;
qryMain.Params[0].AsInteger := StrToInt(edtFeld1.Text);
qryMain.Params[1].AsInteger := StrToInt(edtFeld2.Text);
???

Loki

mkinzler 27. Feb 2006 10:34

Re: Variablen als Parameter übergeben?
 
Nein so
Delphi-Quellcode:
qryMain.SQL.Add('UPDATE Tabelle SET Feld1= :feld1, Feld2 = :feld2' );
qryMain.Params[0].DataType := ftInteger; //Nicht unbedingt notwendig
qryMain.Params[1].DataType := ftInteger; //Nicht unbedingt notwendig
qryMain.Params[0].asString := edtFeld1.Text;
qryMain.Params[1].asString := edtFeld2.Text;
Wie du die Parameter benennst ist in diesem Fall egal könnte auch :f1, :a oder :djajsdhadajks sein.

Loki77 27. Feb 2006 10:38

Re: Variablen als Parameter übergeben?
 
OK, das war das Problem.Warum dann überhaupt Namen.....
Klappt aber, DANKE!!!
Gruss Loki.

SirThornberry 27. Feb 2006 10:40

Re: Variablen als Parameter übergeben?
 
und wie würde das dann aussehen wenn ich in 2 felder den gleichen wert haben will bzw. nicht in der Reihenfolge der params? also so:
SQL-Code:
qryMain.SQL.Add('UPDATE Tabelle SET Feld1= :feld2, Feld2 = :feld1' );
qryMain.Params[0].DataType := ftInteger; //Nicht unbedingt notwendig
qryMain.Params[1].DataType := ftInteger; //Nicht unbedingt notwendig
qryMain.Params[0].asString := edtFeld1.Text;
qryMain.Params[1].asString := edtFeld2.Text;
bzw so:
SQL-Code:
qryMain.SQL.Add('UPDATE Tabelle SET Feld1= :feld1, Feld2 = :feld2, Feld3 = :feld1' );
qryMain.Params[0].DataType := ftInteger; //Nicht unbedingt notwendig
qryMain.Params[1].DataType := ftInteger; //Nicht unbedingt notwendig
qryMain.Params[0].asString := edtFeld1.Text;
qryMain.Params[1].asString := edtFeld2.Text;

mkinzler 27. Feb 2006 12:28

Re: Variablen als Parameter übergeben?
 
Zitat:

Zitat von Loki77
OK, das war das Problem.Warum dann überhaupt Namen.....

Man muß hier Nmaen angeben, um die Erzeugung der Parameter anzustossen. Ich benenne die Parameter immer genauso wie die Felder und fülle die Parameter auch über den Namen. so kann man wie SirThornberry schon erwähnt hat, die Parameter unabhängig von der Reihenfolge ihrer Anlage setzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.

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