Zum Anzeigen der Ergebisse eines SQLs braucht man eigentlich nur:
Ein Memo für die Texteingabe.
Eine ADOQuery, 'ne DataSource und ein DBGrid. DBNavigator ist ein kann. Eventuell 'ne Statusbar mit SimplePanel := True;
Einen Button, der ungefähr so einen Quelltext im OnClick enthält (ungetestet):
Delphi-Quellcode:
var
s :
String;
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
// Wenn selektierter Text vorhanden ist, wird nur der als SQL übernommen.
// Dadurch kann man dann im Memo mehrere SQLs haben und muss nicht immer alle neu schreiben ;-)
// Speichert man mit Memo.Lines.SaveToFile beim Programmende
// und lädt beim Programmstart mit Memo.Lines.LoadFromFile, hat man auch länger was davon.
if Memo.SelAvail
then begin
ADOQuery.SQL.Add(Trim(Memo.SelText));
end else begin
ADOQuery.SQL.Add(Trim(Memo.Text));
end;
if ADOQuery.SQL.Count = 0
then exit;
Try
s := AnsiLowerCase(Copy(ADOQuery.SQL[0],1,6);
if s = '
select'
then begin
ADOQuery.Open;
// Für Abfragen
StatusBar.SimpleText := Format('
Es wurden %d Datensätze gefunden.',[ADOQuery.RecordCount]);
end else begin
ADOQuery.ExecSQL;
// Für alles andere wie Insert, Update, Delete, Create Table ...
StatusBar.SimpleText := Format('
Von der Abfrage waren %d Datensätze betroffen.',[ADOQuery.RowsAffected]);
end;
except
on e :
Exception do begin
MessageDlg(e.
Message,mtError,[mbOk],0);
end;
end;
end;
Man kann zur Laufzeit bei 'ner DataSource den DataSet ändern, allerdings gehe ich her, dass ich jeder
Query, Table (wenn ich die denn mal brauche) 'ne eigene DataSource spendiere und jeweils ein eigenes DBGrid ...
Normalerweise haben aber die "Pflegeteile" von Programmen nur eine Datenbankverbindung, eine
Query, eine DataSource, ein DBGrid und einen DBNavigator. Das reicht, da man alles per
SQL machen kann, was zur Datenanzeige und / oder Datenmanipulation erforderlich ist.
Mehrere Querys und/oder Tables gibt es nur, wenn unumgänglich mehrer Datenmengen zeitgleich zur Verfügung stehen müssen, bei einem Pflegeprogramm scheint mir dies nicht sinnvoll zu sein.