Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Grundsatzfrage zum Open beim Query (https://www.delphipraxis.net/120385-grundsatzfrage-zum-open-beim-query.html)

Tim Henford 10. Sep 2008 10:03

Datenbank: MS SQL • Version: 2000 • Zugriff über: ADO

Grundsatzfrage zum Open beim Query
 
Hallo,

ich wollte mal fragen, was geanu das ADOQuery macht, wenn ich sage:

Delphi-Quellcode:
var
  q      : TAdoQuery;
begin
  q:= TAdoQuery.Create(nil);
  q.Connection:= AdoConnection;
  q.SQL.Text:= 'SELECT * FROM Tabelle';  
  q.Open;
  ....
Werden hier schon Daten beim Open übertragen oder nicht? Der Profiler zeigt ja sowas scheinbar nicht an...
Nun möchte ich einfach einen Datensatz anhängen mit Append. Muss da immer das Select vorausgehen oder wäre das nicht unnötige "Speicherverschwendung"?


Danke Tim

Sharky 10. Sep 2008 10:14

Re: Grundsatzfrage zum Open beim Query
 
Hallo Tim,

nach dem .Open beginnt das DBMS damit ein Query auszuwerten und ggf. Daten an den Client zu übertragen.
Wenn Du neue Daten in die Tabelle einfügen möchtest und nicht mit einem INSERT Befehl von SQL arbeiten möchtest könntest Du es so machen:


ich wollte mal fragen, was geanu das ADOQuery macht, wenn ich sage:

Delphi-Quellcode:
var
  q      : TAdoQuery;
begin
  q:= TAdoQuery.Create(nil);
  q.Connection:= AdoConnection;
  q.SQL.Text:= 'SELECT * FROM Tabelle WHERE 0=1'; // Da die Bedingung immer False ist wird kein Datensatz zum Cl übertragen.
  q.Open;
  q.Insert;
  q.FieldByName ('blubb').AsString := 'blubb'
  q.Post;
  ....

Tim Henford 10. Sep 2008 11:24

Re: Grundsatzfrage zum Open beim Query
 
Danke für die Antwort, aber wie macht man denn das ganze z.B., wenn man eine Form und 3 TDBMemos, sowie eine Datasource und ein AdoQuery als visuelle Komponente hat?

Delphi-Quellcode:
Datasource1.Dataset:= Query;
DBMemo1.Datasource:= Datasource1;
DBMemo1.Datafield:= 'Feld1';
Bisher hab ich das immer so gelöst, dass ich beim onShow-Event folgendes gemacht habe:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  Query.SQL.Text:= 'SELECT * FROM tabelle';
  Query.Open;
  Query.Append;
end;

und bei onOK-ButtonPress:
Delphi-Quellcode:
  Query.Post;
Ist das wirklich die beste Lösung?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz