![]() |
Re: TQuery variabel
Zitat:
Ursprünglich hatte ich es mir so gedacht: Eine Datasource, eine Table1, eine DBCombobox auf das Formular gelegt. DataSource mit Table1 verknüpft, ComboBox mit Datasource verknüpft, Table1 mit Database = C\DB verknüpft und kompiliert. Ergebnis keine TabellenNamen in DBCombobox Die Verknüpfung Combobox.Text mit SQL.Add ... from ... habe ich mir gleich gespart. Daraufhin OpenDialog1 ausprobiert
Delphi-Quellcode:
Ergebnis genauso niederschmetternd da FileName den ganzen Pfad mitliefert.
If OpenDialog.Filename = '' then Tabellenname := gesamt3
Tabellenname:= OpenDialog.Filename ... |
Re: TQuery variabel
Schade das mir hier bis jetzt keiner weiterhelfen kann.
|
Re: TQuery variabel
Hallo,
Zitat:
ExtractFileName -> Tabellen-Name ExtractFilePath -> "DataBase"-Name Heiko |
Re: TQuery variabel
Jetzt muss ich aber nochmal nachfragen.
Du möchtest über die ListBox oder das OpenDialog die entsprechende Tabelle aussuchen. Oder habe ich da jetzt was falsch verstanden. Weil das kann ja eigendlich gar nicht gehen. Die Tabelle selber befindet sich ja in einer Datenbank. Wenn Du es so machen wolltest, ginge das ja nur, wenn jede Datenbank nur eine Tabelle enthalten würde, und diese auch noch den Namen der Tabelle hat. Wäre aber irgendwie unlogisch, weil dann müsstets Du ja auch mit dem kompletten FileName zurechtkommen. Dann darfst Du den nur nicht für den Tabellennamen verwenden, sondern für die Verbindung zur Datenbank, also in der Connection einbauen. Also schlagt mich, aber so versteh ich deine Gedanken. :roll: Gruß Jens |
Re: TQuery variabel
Hallo,
*schlag* *stech* *würg* Du hast es so gewollt ;) Wir reden von Paradox. Eine "Datenbank" ist dort ein Verzeicbnis. Eine "Tabelle" halt eine DB-Datei in diesem Verzeichnis (incl. der Zusatzdazteien, Indizes usw.). Heiko |
Re: TQuery variabel
Zitat:
Gruss Kh |
Re: TQuery variabel
Zitat:
Aua, tut schon weh, aber mehr meine eigene Do..heit. Zitat:
Code:
Habe das gerade mal ausprobiert. So müsste es funktionieren
ExtractFileName := Tabellen-Name
ExtractFilePath := "DataBase"-Name
Delphi-Quellcode:
Gruß Jens
procedure TForm1.Button1Click(Sender: TObject);
var Tabellenname : String; Datenbankverzeichnis : String; begin if OpenDialog1.Execute then begin if OpenDialog1.Filename = '' then Tabellenname := 'gesamt3' else begin Datenbankverzeichnis := ExtractFilePath(OpenDialog1.FileName); Tabellenname := ExtractFileName(OpenDialog1.FileName); end; end; ShowMessage(Tabellenname); ShowMessage(Datenbankverzeichnis); end; |
Re: TQuery variabel
Zitat:
Völlig richtig. Wir sind bei Paradox. Warum nicht? Zitat:
Ursprünglich wollte ich über DBListbox die einzelnen Tabellen auswählen. Dafür bin ich vermutlich zu do... , da der oben beschriebene Weg nicht funktioniert. Also mußte ich mir einen anderen Weg (mit OpenDialog) überlegen. |
Re: TQuery variabel
Warum funktioniert das oben nicht. Ich habe es probiert. Und Du bekommst genau die Daten die du willst. Für deinen Fall benötigst Du...
Delphi-Quellcode:
und in deinem SQL.Text müsste das dann so aussehen...
procedure TForm1.Button1Click(Sender: TObject);
var Tabellenname : String; begin if OpenDialog1.Execute then begin if OpenDialog1.Filename = '' then Tabellenname := 'gesamt3' else Tabellenname := ExtractFileName(OpenDialog1.FileName); end; end; ShowMessage(Tabellenname); end;
Delphi-Quellcode:
also...
SQL.Text :='Select * from '+Tabellenname+' where Upper (feld001) Like Upper (:feld1.text)';
Delphi-Quellcode:
Gruß Jens
procedure TForm1.Button1Click(Sender: TObject);
var Tabellenname : String; begin if OpenDialog1.Execute then begin if OpenDialog1.Filename = '' then Tabellenname := 'gesamt3' else Tabellenname := ExtractFileName(OpenDialog1.FileName); end; end; SQL.Text :='Select * from '+Tabellenname+' where Upper (feld001) Like Upper (:feld1.text)'; end; |
Re: TQuery variabel
Zitat:
Das hat doch niemand behauptet,daß es mit OpenDialog nicht geht. Meine präferierte Möglichkeit mit der DBListbox funktioniert nicht. Dennoch vielen Dank für die Lösung meiner zweiten Möglichkeit (OpenDialog). Gruß Frank |
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 |
Re: TQuery variabel
Zitat:
Das war DER TIP !! Anbei die Lösung:
Delphi-Quellcode:
Vielen Dank an alle die mitgeholfen haben.
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; |
Re: TQuery variabel
Hallo DPler
erneut eine Frage zum Thema TQuery variabel.
Delphi-Quellcode:
Das ist das bisherige Ergebnis. Jetzt ist die Frage wie bekomme ich (Feld001) variabel.
SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld001) Like Upper (:feld1.text) ');
SQL.Add('And Upper (feld002) Like Upper (:feld2.text) '); 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. |
Re: TQuery variabel
Tabellen ermitteln -> GetTableNames
Felder ermitteln -> GetFieldNames Kann man drauf kommen, oder? ;) |
Re: TQuery variabel
Delphi-Quellcode:
dieses bezeichnet die abzufragende Tabelle.
SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld0....
Delphi-Quellcode:
ComboBox1.Text.RecordCount ist natürlich Unfug. Aber es verdeutlicht das Problem.
Statusbar1.Panels[0].Text := IntToStr(ComboBox1.Text.RecordCount);
Ich habe es versucht mit Table1.Tablename := ComboBox1.text und Table1.Recordcount. Das ist alles fehlgeschlagen. Wie kann ich mir noch helfen? |
Re: TQuery variabel
Hallo,
also ich habe die Frage nicht begriffen ... Am besten stellst du sie in einem eigenen Thread mal allgemeiner. Heiko |
Re: TQuery variabel
Im Quelltext (Beitrag 52 siehe oben) steht:
Delphi-Quellcode:
wobei Combobox1.Text den Tabellennamen der abzufragenden Tabelle anzeigt.
SQL.Add('Select * from '+ ComboBox1.Text +' where Upper (feld001) Like Upper (:feld1.text) ');
SQL.Add('And Upper (feld002) Like Upper (:feld2.text) '); Wie kann ich RecordCount-1 also den Die Gesamtzahl der Datensätze der Tabelle in einem eigenen StatusPanel anzeigen also ungefähr:
Delphi-Quellcode:
oder gibt es für diesen Zweck einen eigenen SQL Befehl?
Statusbar1.Panels[0].Text := IntToStr(ComboBox1.Text.RecordCount-1);
Frank |
Re: TQuery variabel
Jetzt hab ich eine Lösung mit Count aus SQL Sprache
Delphi-Quellcode:
Das StatusbarPanel zeigt " 2 " statt 100000 Datensätze an. Woran liegt das?
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; |
Re: TQuery variabel
Zitat:
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? |
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:24 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