Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DB Parameter (https://www.delphipraxis.net/138798-db-parameter.html)

youuu 17. Aug 2009 20:16

Datenbank: MySQL • Zugriff über: Devarts

DB Parameter
 
Hi,

Gibt es eine Möglichkeit die DB Parameter:

Delphi-Quellcode:
QueryRead.Params.ParamValues['test']:= Infos.test;
.
.
.
.
.
.
.
.
Einmalig für alle Querys zu definieren oder muss man sie unter jeden Query erneut schreiben?

Jens Hartmann 17. Aug 2009 21:58

Re: DB Parameter
 
Hallo,

wenn du in der Query, deinen SQL-String zuweisen tust, und dort die Parameter angibts (Was Du ja musst), werden die Parameter automatisch gesetzt. (Entwicklungszeit),

Da ich aber bis jetzt die ganze Sache so verstanden habe, jede Abfrage etc. eine eigene Query, ist es ja so kein Problem.

Gruß Jens

sx2008 18. Aug 2009 01:26

Re: DB Parameter
 
Du kannst natürlich eine private Methode schreiben:
Delphi-Quellcode:
procedure TForm1.SetzeAlleParameter(qry:TMySQLQuery; Infos:TIrgendEinRecordOderKlasse);
begin
  Assert(Assigned(qry)); // Sicherheitsabfrage
  qry.Params.ParamValues['test']:= Infos.test;
  ..
end;
Bei vielen Queries und Parameter kann das viel Schreibarbeit sparen.

hoika 18. Aug 2009 06:47

Re: DB Parameter
 
Hallo,

und die relevanten Queries kommen noch in eine TList (z.B.),
dann geht das ganze per Schleife.


Heiko

youuu 18. Aug 2009 17:50

Re: DB Parameter
 
Allerdings tritt da ein Problem bei mir auf.

Wenn ich die Procedure benutze

Bsp:
Delphi-Quellcode:
public
  Procedure ParamInfo (qry: TMyQuery);
Delphi-Quellcode:
Procedure TFormMain.ParamInfo (qry: TMyQuery);
Begin
  Assert(assigned(qry)); //Sicherheitsabfrage
  qry.Params.ParamValues['histC']:= Infos.Hist;
End;
Allerdings nun in einer anderen Unit verwenden möchte per

Delphi-Quellcode:
FormMain.ParamInfo(QueryInsert);
aufruf.
Funktioniert es nicht da mir Delphi sagt QueryInsert undeklarierter Bezeichner.

DeddyH 18. Aug 2009 17:54

Re: DB Parameter
 
Hast Du denn auch in der aufrufenden Unit eine Variable QueryInsert vom Typ TMyQuery instanziert?

youuu 18. Aug 2009 18:18

Re: DB Parameter
 
Ebend nicht, da das lediglich eine Unit ist ohne eine Form, daher kann ich die Komponente nicht auf die Form.

DeddyH 18. Aug 2009 18:27

Re: DB Parameter
 
Wieso Komponente? Ich habe von der Instanz QueryInsert des Typs TMyQuery gesprochen. Auf Deutsch:
Delphi-Quellcode:
var QueryInsert: TMyQuery;
...
  QueryInsert := TMyQuery.Create(<Parameter>);
Diese Instanz musst Du dann übergeben.

youuu 18. Aug 2009 18:46

Re: DB Parameter
 
Danke das wusste ich gar nicht.
Funktionietr nun auch alles, allerdings eine Frage dazu.

Wenn ich nun mehre Parameter angebe, allerdings niht alle verwenden muss in dem Query, dann spuckt Delphi einen Fehler aus über die nicht vrweneten Parameter. Ist das normal bzw kann man dies umgehen ohne die Parameter zu löschen? Da sie in eine Procedure aus gelagert wurden.

Ist jetzt nicht sehr wichtig, aber wäre interessant zu wiessen.

DeddyH 18. Aug 2009 18:53

Re: DB Parameter
 
Das kann ich aus dem Hut nicht beantworten, da ich alle Parameter, die ich definiere, auch verwende. Evtl. könnte man die Werte ja als array of const übergeben, um flexibel zu bleiben (sofern die Procedure für mehrere Queries mit unterschiedlicher Parameteranzahl verwendet wird).


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr.
Seite 1 von 2  1 2      

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