AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Grundsatzfrage zum Open beim Query
Thema durchsuchen
Ansicht
Themen-Optionen

Grundsatzfrage zum Open beim Query

Ein Thema von Tim Henford · begonnen am 10. Sep 2008 · letzter Beitrag vom 10. Sep 2008
Antwort Antwort
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#1

Grundsatzfrage zum Open beim Query

  Alt 10. Sep 2008, 10:03
Datenbank: MS SQL • Version: 2000 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Grundsatzfrage zum Open beim Query

  Alt 10. Sep 2008, 10:14
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;
  ....
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#3

Re: Grundsatzfrage zum Open beim Query

  Alt 10. Sep 2008, 11:24
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:
  Query.Post; Ist das wirklich die beste Lösung?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 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