![]() |
Datenbank: InterBase • Version: 6.x • Zugriff über: SQL Query
SQL-Query, Ergebnisse in DBGrid darstellen?
Hallo erstmal.
Also, ich will eine SQL query an meine IB Datenbank senden und die Ergebnisse dann in einem DBGrid darstellen. Ich hab die Datenbank schon an meinem Frontend angeschlossen (Also DataModule mit IBDatabase, IBTransaction, IBDataSet und DataSource <- das sind auch die Namen) Dann hab ich eine IBQuery1, deren DataBase, DataSource und Transaction eingestellt sind. Ein DBGrid ist auch vorhanden, das zeigt mir auch alle Daten aus der Datenbank an. Meine Idee war, einen Button zu platzieren und im onClick Ereignis folgenden code zu verwenden:
Code:
Tut aber nicht :( EDIT: D.h. es gibt die Ergebnisse nicht in das DBGrid aus, dort sind noch immer die "alten" Daten, die beim öffnen des Frames aus der DB gelesen wurden.
procedure TForm1.Button1Click(Sender: TObject);
begin IBQuery1.SQL.Clear; IBQuery1.SQL.Add('SELECT * FROM adresse ORDER BY vorname'); IBQuery1.Open; DBGrid.Refresh end; Ich gehe mal davon aus, das meine Frage recht standart ist. Ich arbeite aber erst seit weniger als einer Woche mit Delphi/Interbase und muss das wegen meines Praxissemesters ziemlich crashkursmässig lernen und dazu auch ohne Ansprechpartner (Stelle wurde gestrichen...) Sprecht bei der Antwort bitte laut und deutlich und geht einfach davon aus, das ich ein wenig doof bin, dann passt das schon :) -theBlind |
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Hai theBlind,
versuche doch einfach mal vor dem neu setzen des SQL-Kommandos ein IBQuery1.Close (also vor deinem SQL.Clear). |
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Zitat:
|
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Also das IBQuery1.Close verändert im Verhalten nichts.
Zitat:
|
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Hab ich das oben richtig gelesen, dass du die Eigenschaft Datasource von deiner IBQuery gesetzt hast? Lass die mal weg. Es reicht aus die Eigenschaft Dataset von deiner TDatasource zu setzen.
|
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Hi,
Ich kenen die IBQuery nicht aber vielleicht änderst du mal deine SQL-Abfrage, vielleivht fragst du 2 mal das gleiche ab. SELECT VORNMAE FROM ADRESSEN <-- was macht er dann?
Delphi-Quellcode:
So sollte das doch funktionieren
procedure TForm1.Button1Click(Sender: TObject);
begin IBQuery1.Close IBQuery1.SQL.Clear; IBQuery1.SQL.Add('SELECT VORNAME FROM ADRESSEN'); IBQuery1.Open; end; Greets |
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Zitat:
|
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Das DBGrid hat jetzt als DataSource DataSource, die IBQuery hat als DataBase DataBase, DataSource ist leer.
Die DataSource hängt an IBDataSet und das teilt sich mit zwei anderen IBDataSets eine IBTransaction, die wiederum an IBDataBase hängt. Bei IBDataBase ist IBTransaction als default transaction eingetragen. Das setup funktioniert so wie es ist, wenn ich daten verändern, schreiben, lesen will. Was mir eigentlich irgendwie fehlt ist das ich das DBGrid auf die Ergebnistable des Query setzen kann. Danke für die Vorschläge, bitte weiterschlagen :) |
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Geht die DataSource nicht an die Query?
|
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
DataSource hat bei mir im ObjektInspektor die Felder
-AutoEdit -DataSet -Enabled -Name -Tag Wie "geht die an die query"? Die IBQuery hat bei DataSource nichts eingetragen, wie mir empfohlen wurde. Active: false Params und SQL leer Wenn ich auf Generator Field gehe kommt leere SQL Anweisung, aber das hab ich als nicht schlimm empfunden, da die Anweisung ja leer ist. |
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Zitat:
|
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Kommt die Query in eine Form oder ins Datenmodul?
Gibt es da nicht irgendwo ein tutorial mit Schritt für Schritt Anweisungen? :wall: |
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
Zitat:
|
Re: SQL-Query, Ergebnisse in DBGrid darstellen?
*freu*
Ich habs gelöst. :bounce1: Ich brauchte eine DataSource, die als DataSet die Query hat... jetzt hab ichs kapiert. Danke für die vielen Vorschläge! Also, nochmal langsam, zum mitschreiben, für die zwei Leuts, die es wie ich auch nicht kapiert haben: DataModule: 1. Database (Adresse der DB eintragen) 2. Transaction (In der Database als default Transaction eintragen, die Database hier unter DefaultDatabase eintragen 3. Query (Hier die Database eintragen, sonst nüscht, wenn das SQL zur Laufzeit eingegeben wird oder sonstwie vom Himmel fallen wird) 4. DataSource (Hier als DataSet die Query eintragen) Programm-Form: 5. Die Query mit
Code:
irgendwo intitialisieren (zB von einem Button aus oder so)
DataModule.Query.Close; //Anstelle von DataModule natürlich den Namen des DataModuls eintragen,
DataModule.Query.SQL.Clear; //ebenso für die Query DateModule.Query.SQL.Add := ('Hier SQL Statement'); DataModule.Query.Open; 6. Entweder das ausgabe Grid von vorneherein auf die Query-DataSource einstellen oder zur Laufzeit per
Code:
Das passt ganz gut direkt unter den Code oben.
DBGrid.DataSource := DataModule.QueryDataSource;
Eh voilá, das DBGrid zeigt die ergebnisse der query an. Es herrscht freude. Wer will kann natürlich auch mit einer Edit-Komponente und DataModule.IBQuery.SQL.Text := EditKomponente.Text; //anstelle der IBQuery.SQL.Add anweisung eine kleines Interface bauen (mit SQL kann mensch sooo schön leicht eindruck schinden :roll: ) Nochmal Danke an alle! -theBlind @Mods: kann jemand den titel des treads mit gelöst erweitern? Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 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