Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Anweisung an Button senden (https://www.delphipraxis.net/10042-sql-anweisung-button-senden.html)

endyexcellent 10. Okt 2003 10:36


SQL Anweisung an Button senden
 
Haaaallo,

ist es möglich, und wenn ja wie, eine SQL Anweisung (z.Bsp. SELECT * FROM tablename WHERE .......)
über eine Button-Komponente zu starten?

Mfg,
enDyExellent

r_kerber 10. Okt 2003 11:12

Re: SQL Anweisung an Button senden
 
Hallo endyexcellent,

Schreibe eine OnClick-Prozedure für den Button, in der Du zunächst das SQL-Statement in die SQL-Eigenschaft einer TQuery einträgts und dann die Query öffnest!

endyexcellent 10. Okt 2003 12:08

Re: SQL Anweisung an Button senden
 
Okay... habe jetzt eine Query Komponente mit der entsprechenden SQL Anweisung. Aber mit welchem Befehl starte ich die Query mit dem Button?

Mfg, enDyExcellent

r_kerber 10. Okt 2003 12:11

Re: SQL Anweisung an Button senden
 
Wie gesagt, eine OnClick-Prozedur:
Delphi-Quellcode:
Query1.Close;
Query1.SQL = 'SELECT * FROM tablename WHERE .......';
Query1.Open;

endyexcellent 10. Okt 2003 12:30

Re: SQL Anweisung an Button senden
 
Jaaa :o) super, ich bin leider noch Anfänger..

und so:

SQL-Code:
procedure TForm1.Button5Click(Sender: TObject);
begin
     IBQuery1.Close;
     IBQuery1.SQL = 'select PERSNR from MITARBEITER';
     IBQuery1.Open;
end;
klappt es jedenfalls nicht.

Memo 10. Okt 2003 12:49

Re: SQL Anweisung an Button senden
 
Zitat:

"Jaaa :o) super, ich bin leider noch Anfänger
Dann kauf dir ein Buch.
Und es gibt bestimmt keinen Grund gleich unhöflich zu werden, blos weil jemand der dir nur helfen wollte mal ".Text" vergessen hat. :evil:

r_kerber 10. Okt 2003 18:25

Re: SQL Anweisung an Button senden
 
Zitat:

Zitat von endyexcellent
Jaaa :o) super, ich bin leider noch Anfänger..

Es gibt ja auch noch die OH mit guten Beispielen! So sollte es dann aber funktionieren:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin
     IBQuery1.Close;
     IBQuery1.SQL.Clear;
     IBQuery1.SQL.Add ('select PERSNR');
     IBQuery1.SQL.Add ('from MITARBEITER');
     IBQuery1.SQL.Add ('where PERSNR < 20');
     IBQuery1.Open;
end;
Die WHERE-Klausel möchte ich Dir vor allem bei großen Tabellen an's Herz legen, da Du sonst ewig auf die Daten wartest!

endyexcellent 13. Okt 2003 08:44

Re: SQL Anweisung an Button senden
 
Ich wollte keineswegs unhöflich sein. Und mein
Zitat:

Jaaa ) super, ich bin leider noch Anfänger..
wurde wohl missverstanden, hm? *schmunzl* War jedenfalls nicht böse gemeint.

So aber nun nochmal zu meinem Problemchen..
..ja, es klappt nämlich dämlich immer noch nicht :roteyes:

kann es sein dass es nicht klappt weil ich 2 Querys im Formular hab? Die eine Query ist auf True gesetzt damit man beim Start der Anwendung gleich die erste Abfrage bekommmt. Nun will ich über den Button die Tabelle neu anzeigen, refreshed sozusagen mit neuer Sortierung. Aber es klappert nicht und in der Hilfe hab ich natürlich auch schon nachgeschaut, und Bücher hab ich auch.. aber davon qualmt mir schon der Kopf.

tazmania 13. Okt 2003 08:53

Re: SQL Anweisung an Button senden
 
Hier auch noch eine kleine Hilfe.....

Dieser Code ist für Oracle ausgelegt und verwendet Parameter. Dies kann aber auch sonst eingesetzt werden

Delphi-Quellcode:
  PUBLIC
   PROCEDURE Select1(Text1_param,Text2_param,Text3_param,Text4_param,Text5_param,Text6_param,Text7_param,Text8_param,Text9_param:String);


.....
PROCEDURE TForm1.Select1(Text1_param,Text2_param,Text3_param,Text4_param,Text5_param,Text6_param,Text7_param,Text8_param,Text9_param:String);
BEGIN
 Datamodule1.Query1.close;
 Datamodule1.Query1.SQL.clear;
 Datamodule1.Query1.SQL.add(Text1_param);
 IF NOT (Text2_param = '') THEN Datamodule1.Query1.Params[0].AsString := Text2_param;
 IF NOT (Text3_param = '') THEN Datamodule1.Query1.Params[1].AsString := Text3_param;
 IF NOT (Text4_param = '') THEN Datamodule1.Query1.Params[2].AsString := Text4_param;
 IF NOT (Text5_param = '') THEN Datamodule1.Query1.Params[3].AsString := Text5_param;
 IF NOT (Text6_param = '') THEN Datamodule1.Query1.Params[4].AsString := Text6_param;
 IF NOT (Text7_param = '') THEN Datamodule1.Query1.Params[5].AsString := Text7_param;
 IF NOT (Text8_param = '') THEN Datamodule1.Query1.Params[6].AsString := Text8_param;
 IF NOT (Text9_param = '') THEN Datamodule1.Query1.Params[7].AsString := Text9_param;
 Datamodule1.Query1.Open;
END;

PROCEDURE TForm1.Button64Click(Sender: TObject);
BEGIN
 Select1('select * FROM XXXXXX WHERE YYYY = :Variable',Variable,'','','','','','','');
END;

endyexcellent 13. Okt 2003 08:57

Re: SQL Anweisung an Button senden
 
Hihi. Danke für Tips.

Mein Problem ist glaube ich folgendes:

Kan ich irgendeinen Befehl in den Button einbauen, welcher die erste Abfrage löscht und die zweite Abfrage startet?

Sharky 13. Okt 2003 09:38

Re: SQL Anweisung an Button senden
 
Zitat:

Zitat von endyexcellent
Hihi. Danke für Tips.

Mein Problem ist glaube ich folgendes:

Kan ich irgendeinen Befehl in den Button einbauen, welcher die erste Abfrage löscht und die zweite Abfrage startet?

Hai endyexcellent,

Durch den Close Befehl wird die "Abfrage" eigentlich gelöscht.

Was genau passiert denn (nicht) wenn Du den obigen Code ausführst?
Wo sollen die Daten denn angezeigt werden?

endyexcellent 13. Okt 2003 10:06

Re: SQL Anweisung an Button senden
 
Also ich hab folgenden Befehl:

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
     IBQuery1.Close;
     IBQuery2.Close;
     IBQuery2.SQL.Clear;
     IBQuery2.SQL.Add ('select PERSNR, ABTNR, NAME');
     IBQuery2.SQL.Add ('from MITARBEITER');
     IBQuery2.SQL.Add ('order by NAME');
     IBQuery2.Open;

end;
Und die Abfrage wird angezeigt im DBGrid

Wenn ich den Button click dann wird erste Abfrage gelöscht, und weiter passiert nichts.
Wieso startet die zweite Abfrage nicht?

r_kerber 13. Okt 2003 10:54

Re: SQL Anweisung an Button senden
 
Ich vermute mal, Dein DBGrid hängt an IBQuery1.

endyexcellent 13. Okt 2003 11:42

Re: SQL Anweisung an Button senden
 
Heisst also ich kann mit einem DBGrid garkeine 2 Query-Abfragen starten?
Weil ich muss beim DBGrid ja die DataSource angeben und die hängt ja fest an meiner Query, oder?

endyexcellent 13. Okt 2003 11:48

Re: SQL Anweisung an Button senden
 
Okay. Dann ist mir alles klar :thuimb:
Lege ich einfach ein zweites DBGrid über das erste und habe somit 2 separate Abfragen.
Mit den Buttons steuer ich dann die Visibilität und fertig ist das Teil.

r_kerber 13. Okt 2003 11:51

Re: SQL Anweisung an Button senden
 
Wieso nimmst Du zwei Query's? Mach doch alles in einer!


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