Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Query SQL (https://www.delphipraxis.net/156370-query-sql.html)

ilse2005 29. Nov 2010 20:49

Datenbank: Access • Version: 2010 • Zugriff über: ADO

Query SQL
 
Hallo,
ich habe ein Problem mit der TADOQuery Komponene von Delphi 7.
Mit folgender Procedure setze ich das Query:

Delphi-Quellcode:
procedure TFormMain.QuerySetzen();
var
  Query : TADOQuery;
begin
  Query := DataModule2.ADOQueryBuch;
  Query.Close;
  Query.SQL.Clear;
  Query.SQL.Add('SELECT Buch.Titel, Buch.Autor, Buch.Beschreibung, Buch.Bild, Buch.Gelesen, Buch.Benutzer, Buch.Monat, Buch.Jahr, Buch.Test ');
  Query.SQL.Add('FROM');
  Query.SQL.Add('Buch');



  Query.SQL.Add('Order by Jahr,Monat');
  Query.Open;
end;
Das Problem ist nun, wenn ich dies im OnFormCreate Event aufrufe werden die Felder "Beschreibung" und "Test" nicht geladen.
Wennn ich die gleiche procedur aber z.b durch einen Button aufrufe funktionier alles wunderbar.
Wo liegt das Problem?

Satty67 29. Nov 2010 21:13

AW: Query SQL
 
DataModule2 wird erst nach OnFormCreate richtig initialisiert, weshalb dann DataModule2.ADOQueryBuch keine korrekten Connection-Werte hält?

Bei Delphi7 gibt es noch kein Form.OnLoaded, evtl. statt OnFormCreate das Ereignis OnActivate verwenden. Da muss man einmalige Sachen allerdings Steuern (Wird ja u.U. mehrmals aufgerufen):

Delphi-Quellcode:
Form private (member) FFirstRun : Boolean; // im OnFormCreate auf true setzen
.


und im OnActivate
Delphi-Quellcode:
if FFirstRun then
begin
  FFirstRun := false;
  // Init Code
end;

Sir Rufo 29. Nov 2010 23:56

AW: Query SQL
 
Zitat:

Zitat von Satty67 (Beitrag 1064903)
Bei Delphi7 gibt es noch kein Form.OnLoaded

Bei Delphi 2010 auch nicht ... oder überlese ich das konsequent? :gruebel:

Satty67 30. Nov 2010 00:17

AW: Query SQL
 
Ups, hab' da wohl was vermischt. Macht ja nix, für D7 bleibt es ja gleich.

Ist eine Variante für C#, die in OnLoad Application.Idle einem OnLoaded Handler zuweist (und dort gleich wieder entfernt). Bei Delphi wäre das wohl in etwa der erste Aufruf eines ActionList-Update. Denke aber für Delphi passt die alte Variante noch besser.

hoika 30. Nov 2010 06:11

AW: Query SQL
 
Hallo,

das FFirstRun kann man sich spoaren,
wenn man als letzten Befehl in FormActivate einfach

Delphi-Quellcode:
OnActivate:= NIL;
schreibt.


Heiko

mkinzler 30. Nov 2010 06:30

AW: Query SQL
 
Zitat:

Zitat von Sir Rufo (Beitrag 1064930)
Zitat:

Zitat von Satty67 (Beitrag 1064903)
Bei Delphi7 gibt es noch kein Form.OnLoaded

Bei Delphi 2010 auch nicht ... oder überlese ich das konsequent? :gruebel:

Die Methode heisst auch .Loaded()

toms 30. Nov 2010 06:41

AW: Query SQL
 
Zitat:

Zitat von hoika (Beitrag 1064944)
Hallo,

das FFirstRun kann man sich spoaren,
wenn man als letzten Befehl in FormActivate einfach

Delphi-Quellcode:
OnActivate:= NIL;
schreibt.

Gute Idee ... aber natürlich nur dann, wenn das OnActivate Ereignis später nicht mehr gebraucht wird.


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