Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Params.ParamByName (https://www.delphipraxis.net/88340-params-parambyname.html)

fapsons 14. Mär 2007 10:19

Datenbank: Firebird • Version: 2.0 • Zugriff über: InterBase

Params.ParamByName
 
Hallo Leute,

habe das Problem, dass ich bei unten aufgeführter Procedure immer die Fehlermeldung bekomme, dass die einzelnen Parameter nicht gefunden wurden.
Lege ich die falsch fest?
Kann ich nicht die Schreibweise :ZE, :BDE, usw. benutzen und Sie nachher mit Params.ParamByName('ZE').Value definieren?

Gruß,
-fapsons--


Delphi-Quellcode:
procedure Set_DB_Values;
var i :Integer;
    SQL_Line: array[1..5] of String;
    SQL_Prompt :String;
begin

 SQL_Line[1] := 'UPDATE Version v ';
 SQL_Line[2] := 'SET v.ze = :ZE, v.bde = :BDE, v.pep = :PEP, v.zk = :ZK, v.av = :AV, v.webze = :WEBZE, v.antrv = :ANTRV,';
 SQL_Line[3] := 'v.sprachv = :SPRACHV, v.anz_client = :nCLIENT, v.pc_ddp = :PCDDP, v.server_name = :SERVERNAM,';
 SQL_Line[4] := 'v.ma_anz = :MAANZ';
 SQL_Line[3] := 'WHERE (v.vsid =''' + inttostr(reg.Versions_ID) + ''')';

 for i := 1 to length(SQL_Line) do SQL_Prompt := SQL_Prompt + SQL_Line[i];


 with D_DataModule.DataQuery do
 begin
  SQL.Clear;
  SQL.Text := SQL_Prompt;
  Params.ParamByName('ZE').Value := bool_to_JN(reg.ZE);
  Params.ParamByName('BDE').Value := bool_to_JN(reg.BDE);
  Params.ParamByName('PEP').Value := bool_to_JN(reg.PEP);
  Params.ParamByName('ZK').Value := bool_to_JN(reg.ZK);
  Params.ParamByName('AV').Value := bool_to_JN(reg.AV);
  Params.ParamByName('WEBZE').Value := bool_to_JN(reg.WebZE);
  Params.ParamByName('ANTRV').Value := bool_to_JN(reg.AntragsV);
  Params.ParamByName('SPRACHV').Value := inttostr(reg.Sprachversion);
  Params.ParamByName('nCLIENT').Value := inttostr(reg.nClients);
  Params.ParamByName('PCDDP').Value := reg.PC_DDP;
  Params.ParamByName('SERVERNAM').Value := reg.ServerName;
  Params.ParamByName('MAANZ').Value := inttostr(reg.nMitarbeiter);
  Params.ParamByName('VERSKEY').Value := reg.VersionKey;
  Params.ParamByName('VERSID').Value := inttostr(reg.Versions_ID);
  Params.ParamByName('FILID').Value := inttostr(reg.Filial_ID);
  ExecSQL;
 end;
end;

dfried 14. Mär 2007 11:09

Re: Params.ParamByName
 
Du musst erst mal die Parameter auch definieren bevor du Sie verwenden kannst, die einfach in den SQL reinzuschreiben reicht nicht, es muss zusätzlih noch für jeden Parameter ein Params.AddParam(...) aufgerufen werden wo dann z.B. auch der Datentyp des Parameters festgelegt wird.

bttb930 14. Mär 2007 11:10

Re: Params.ParamByName
 
Check mal D_DataModule.DataQuery.ParamCheck. Das muss TRUE sein.

bttb930 14. Mär 2007 11:10

Re: Params.ParamByName
 
Zitat:

Zitat von dfried
Du musst erst mal die Parameter auch definieren bevor du Sie verwenden kannst, die einfach in den SQL reinzuschreiben reicht nicht, es muss zusätzlih noch für jeden Parameter ein Params.AddParam(...) aufgerufen werden wo dann z.B. auch der Datentyp des Parameters festgelegt wird.

eben das stimmt nicht wenn ParamCheck True ist.

fapsons 14. Mär 2007 11:11

Re: Params.ParamByName
 
Hallo, habe es jetzt ohne deinen Vorschlag auch hinbekommen. Lag an der falschen Durchnummerierung, der SQL-Lines...;) Sorry :wall: :wall:

hoika 14. Mär 2007 14:21

Re: Params.ParamByName
 
Hallo,

wozu sollte das array überhaupt gut sein.

Delphi-Quellcode:
with Query do
begin
  SQL.Clear;
  SQL.Add('Update Table set bla=:bla, bla2=:bla2,');
  SQL.Add('bla3=:bl3, bla4=:bla4');

  ParamByName('bla').AsX:= ;
  ParamByName('bla2').AsX:= ;

  usw.

  ExecSQL;
end;

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:11 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