Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TQuery variabel (https://www.delphipraxis.net/146202-tquery-variabel.html)

hoika 21. Jan 2010 10:28

Re: TQuery variabel
 
Hallo,

es gibt noch einen anderen Weg.

TDataBase.GetTablesNames

Die Tabellen würde ich dann in einer normale ListBox/ListView packen.


Heiko

fl63 23. Jan 2010 11:10

Re: TQuery variabel
 
Zitat:

Zitat von hoika
Hallo,

es gibt noch einen anderen Weg.

TDataBase.GetTablesNames

Die Tabellen würde ich dann in einer normale ListBox/ListView packen.


Heiko


Das war DER TIP !!

Anbei die Lösung:

Delphi-Quellcode:
procedure TForm1.AbfrageClick(Sender: TObject);
Var SQLString1,SQLString2: String;
begin
If Edit1.Text = '' then Edit1.Text := '..';
If Edit2.Text = '' then Edit2.Text := '..';
SQLString1:= StringReplace(Edit1.Text,'#','_',[rfReplaceAll]);
SQLString1:= StringReplace(SQLString1,'..','%',[rfReplaceAll]);
SQLString2:= StringReplace(Edit2.Text,'#','_',[rfReplaceAll]);
SQLString2:= StringReplace(SQLString2,'..','%',[rfReplaceAll]);
  with Query1 do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld001) Like Upper (:feld1.text) ');
    SQL.Add('And Upper (feld002) Like Upper (:feld2.text) ');
    ParamByName('feld1.text').asString := SQLString1;
    ParamByName('feld2.text').asString := SQLString2;
    Active:=True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Database1.GetTableNames(ComboBox1.Items,false);
end;
Vielen Dank an alle die mitgeholfen haben.

fl63 3. Mär 2010 14:20

Re: TQuery variabel
 
Hallo DPler

erneut eine Frage zum Thema TQuery variabel.

Delphi-Quellcode:
    SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld001) Like Upper (:feld1.text) ');
    SQL.Add('And Upper (feld002) Like Upper (:feld2.text) ');
Das ist das bisherige Ergebnis. Jetzt ist die Frage wie bekomme ich (Feld001) variabel.
Andere Tabellen haben den FeldNamen zB. Name oder Adresse.
Solche Tabellen bekomme ich nicht mit obengenannter Abfrage abgefragt. Also muß ich den Feldnamen aus der jeweiligen Tabelle auslesen und als Variable statt (Feld001) angeben. Wie mache ich das.

DeddyH 3. Mär 2010 14:23

Re: TQuery variabel
 
Tabellen ermitteln -> GetTableNames
Felder ermitteln -> GetFieldNames

Kann man drauf kommen, oder? ;)

fl63 13. Mär 2010 13:39

Re: TQuery variabel
 
Delphi-Quellcode:
SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld0....
dieses bezeichnet die abzufragende Tabelle.

Delphi-Quellcode:
Statusbar1.Panels[0].Text := IntToStr(ComboBox1.Text.RecordCount);
ComboBox1.Text.RecordCount ist natürlich Unfug. Aber es verdeutlicht das Problem.
Ich habe es versucht mit Table1.Tablename := ComboBox1.text und Table1.Recordcount. Das ist alles fehlgeschlagen. Wie kann ich mir noch helfen?

hoika 13. Mär 2010 20:10

Re: TQuery variabel
 
Hallo,

also ich habe die Frage nicht begriffen ...
Am besten stellst du sie in einem eigenen Thread mal allgemeiner.


Heiko

fl63 14. Mär 2010 09:15

Re: TQuery variabel
 
Im Quelltext (Beitrag 52 siehe oben) steht:
Delphi-Quellcode:
SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld001) Like Upper (:feld1.text) ');
    SQL.Add('And Upper (feld002) Like Upper (:feld2.text) ');
wobei Combobox1.Text den Tabellennamen der abzufragenden Tabelle anzeigt.

Wie kann ich RecordCount-1 also den Die Gesamtzahl der Datensätze der Tabelle in einem eigenen StatusPanel anzeigen also ungefähr:
Delphi-Quellcode:
Statusbar1.Panels[0].Text := IntToStr(ComboBox1.Text.RecordCount-1);
oder gibt es für diesen Zweck einen eigenen SQL Befehl?

Frank

fl63 14. Mär 2010 13:26

Re: TQuery variabel
 
Jetzt hab ich eine Lösung mit Count aus SQL Sprache

Delphi-Quellcode:
If Combobox1.Text = '' then Combobox1.Text := 'gesamt3';
  with Query1 do
  begin
    Active:=False;
    SQL.Clear;
    SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld001) Like Upper (:feld1.text) ');
    SQL.Add('And Upper (feld002) Like Upper (:feld2.text) ');
    ParamByName('feld1.text').asString := SQLString1;
    ParamByName('feld2.text').asString := SQLString2;
    Active:=True;
  end;
StatusBar1.Panels[0].Text:=
IntToStr(Query1.SQL.Add('Select CountAll(feld001)from' + ComboBox1.text+' '));

end;
Das StatusbarPanel zeigt " 2 " statt 100000 Datensätze an. Woran liegt das?

DeddyH 14. Mär 2010 13:54

Re: TQuery variabel
 
Zitat:

Delphi-Quellcode:
StatusBar1.Panels[0].Text:=
IntToStr(Query1.SQL.Add('Select CountAll(feld001)from' + ComboBox1.text+' '));

:pale:
Was erwartest Du denn hier? Die Query ist aktiv, Du müsstest also entweder
- die Query schließen, SQL ändern, öffnen und Ergebnis auslesen oder
- eine 2. Query erzeugen, dieser die COUNT-Abfrage eintragen, öffnen und Ergebnis auslesen

Ich würde die 2. Methode bevorzugen. Btw: was ist CountAll, hab ich noch nie gehört?

fl63 14. Mär 2010 14:08

Re: TQuery variabel
 
Also ich werde die 2te Query erzeugen und entsprechend abfragen.
'CountAll = Count *' ?? irgendwo habe ich das im Netz gelesen.

Vielen Dank für die Antwort.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 Uhr.
Seite 6 von 6   « Erste     456   

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