Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi SQL Query Name über Prozedur Variable übergeben (https://www.delphipraxis.net/99906-sql-query-name-ueber-prozedur-variable-uebergeben.html)

toyoman 19. Sep 2007 12:54


SQL Query Name über Prozedur Variable übergeben
 
SQL Query Name über Prozedur Variable übergeben:

Hallo, weiss nicht wie ich nach einer Lösung für dieses Problem suchen soll.

Ich möchte gern bei der folgenden Prozedur den Query Namen dynamisch übergeben können:

Delphi-Quellcode:
procedure queryfuellen(queryname,dateiname,tabellenname:string);
begin
   // SQL Statement einlesen (SQL Strings)
   if fileexists(prgpath+dateiname) then
   begin
       queryname.SQL.LoadFromFile(prgpath+dateiname);
   end else
   begin
       showmessage(tabellenname+': SQL Datei '+queryname+', Datei: '+ prgpath+dateiname+' nicht gefunden!');
   end;
end;
Die Variable "queryname" soll dabei zum Beispiel die eigentliche SQLQuery "QRTest" sein. Somit bräuchte ich nur noch eine Prozedur um alle meine Querys darüber abfüllen zu können.

Nur, als String kann ich den Namen der Query ja nicht übergeben, wie kann ich das machen und geht das überhaupt?

Danke schon mal im voraus für Tips.

DeddyH 19. Sep 2007 13:00

Re: SQL Query Name über Prozedur Variable übergeben
 
Delphi-Quellcode:
TQuery(FindComponent(queryname)).SQL.Text := 'SELECT * FROM Tabelle';
Sollte so funktionieren.

toyoman 19. Sep 2007 13:07

Re: SQL Query Name über Prozedur Variable übergeben
 
Hey

habe ich so angepasst:

Delphi-Quellcode:
procedure queryfuellen(queryname,dateiname,tabellenname:string);
begin
   // SQL Statement einlesen (SQL Strings)
   if fileexists(prgpath+dateiname) then
   begin
       TSQLQuery(FindComponent(queryname).SQL.LoadFromFile(prgpath+dateiname);
       //TQuery(FindComponent(queryname)).SQL.Text
   end else
   begin
       showmessage(tabellenname+': SQL Datei '+queryname+', Datei: '+ prgpath+dateiname+' nicht gefunden!');
   end;
end;
Funktioniert aber leider nicht, Fehlermeldung: Error 616: Undeclared identifier: 'FindComponent'

Was fehlt mir noch?


Zitat:

Zitat von DeddyH
Delphi-Quellcode:
TQuery(FindComponent(queryname)).SQL.Text := 'SELECT * FROM Tabelle';

Sollte so funktionieren.


hoika 19. Sep 2007 13:16

Re: SQL Query Name über Prozedur Variable übergeben
 
Hallo,

FindComponent ist eine Methode von TForm.
Du musst also das Form, wo doe Query drauf ist, mit übergeben.

Aber warum machst du nivcjht folgendes

Delphi-Quellcode:
procedure queryfuellen(query: TQuery; dateiname, tabellenname:string);
übergibst also die zu "füllende" Query direkt


Heiko

DeddyH 19. Sep 2007 13:19

Re: SQL Query Name über Prozedur Variable übergeben
 
Hallo,

ich habe nicht beachtet, dass es sich nicht um eine Klassenmethode handelt. Also müsstest Du das Formular, auf dem das Query liegt, als Parameter mit übergeben.
Delphi-Quellcode:
procedure queryfuellen(aForm: TForm;queryname,dateiname,tabellenname:string);
begin
   // SQL Statement einlesen (SQL Strings)
   if fileexists(prgpath+dateiname) then
   begin
       TSQLQuery(aForm.FindComponent(queryname)).SQL.LoadFromFile(prgpath+dateiname);
       //TQuery(FindComponent(queryname)).SQL.Text
   end else
   begin
       showmessage(tabellenname+': SQL Datei '+queryname+', Datei: '+ prgpath+dateiname+' nicht gefunden!');
   end;
end;
//Wobei Heiko natürlich Recht hat, das wär simpler und weniger fehleranfällig.

toyoman 19. Sep 2007 13:19

Re: SQL Query Name über Prozedur Variable übergeben
 
Du hast natürlich recht, das ist genau das was ich gesucht habe!!!!

Vielen Dank!

Thema erledigt, danke allen Lesern :-)

Zitat:

Zitat von hoika
Hallo,

FindComponent ist eine Methode von TForm.
Du musst also das Form, wo doe Query drauf ist, mit übergeben.

Aber warum machst du nivcjht folgendes

Delphi-Quellcode:
procedure queryfuellen(query: TQuery; dateiname, tabellenname:string);
übergibst also die zu "füllende" Query direkt


Heiko



Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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-2025 by Thomas Breitkreuz