AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenmodul alle Queries in einem schliessen

Datenmodul alle Queries in einem schliessen

Ein Thema von josef-b · begonnen am 27. Nov 2022 · letzter Beitrag vom 29. Nov 2022
Antwort Antwort
josef-b

Registriert seit: 6. Jun 2004
Ort: bei Jena in Thüringen
95 Beiträge
 
Delphi 11 Alexandria
 
#1

Datenmodul alle Queries in einem schliessen

  Alt 27. Nov 2022, 17:37
Datenbank: Firebird • Version: 3.0 • Zugriff über: IBExpress
Ich habe ein Datamodul mit vielen TIBQuery.

Nun möchte ich beim oncreate des Datamoduls alle Transactionen schliessen.

Dazu habe mir folgenden Code vorgestellt

Delphi-Quellcode:
for i := 0 to Datenmodul.ComponentCount - 1 do
  begin
  if Datenmodul.Components[i] is TIBQuery then
    begin
    AQuery := Datenmodul.Components[i] as TIBQuery;
    if Aquery.Transaction.InTransaction then AQuery.Transaction.Commit;
    end;
  end;
end;
es wird fehlerfrei compiliert, aber gleich in der ersten Zeile mit dem ComponentCount bekomme ich
eine AV Zugriffsverletzung.

Funktioniert das evtl gar nicht im Datamodul?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Datenmodul alle Queries in einem schliessen

  Alt 27. Nov 2022, 18:02
Ja,
im OnCreate macht das keinen Sinn.
Die Transaktionen wurden doch noch gar nicht erzeugt,
weil es das DataModul noch gar nicht gibt ...
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.061 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datenmodul alle Queries in einem schliessen

  Alt 27. Nov 2022, 18:58
Beim OnCreate des DatenModuls ist die Variable DatenModul vermutlich noch nicht zugewiesen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Datenmodul alle Queries in einem schliessen

  Alt 28. Nov 2022, 10:38
Ich benutze dafür lieber AfterConstruction:

Delphi-Quellcode:
type
  TDMDeinDatenModul= class(TDataModule)
  ...
  public
    procedure AfterConstruction; override;
  ...
implementation
  ...
procedure TDMDeinDatenModul.AfterConstruction;
begin
  inherited;
  // hier deinen Code
end;
Frank
Frank Reim
  Mit Zitat antworten Zitat
BerndS
Online

Registriert seit: 8. Mär 2006
Ort: Jüterbog
480 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Datenmodul alle Queries in einem schliessen

  Alt 28. Nov 2022, 10:44
Es würde ja schon reichen, Datenmodul wegzulassen. Self ist ja das Datenmodul, welches der Variable Datenmodul nach dem Create zugewiesen wird.
Delphi-Quellcode:
for i := 0 to ComponentCount - 1 do
begin
  if Components[i] is TIBQuery then
  begin
    AQuery := TIBQuery(Components[i]);
    if Aquery.Transaction.InTransaction then
      AQuery.Transaction.Commit;
  end;
end;
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Datenmodul alle Queries in einem schliessen

  Alt 28. Nov 2022, 10:50
Ich frag mich nur, welchen Grund es geben kann, beim Create Transactions zu commiten. Hätte ich eher im BeforDestruction vermutet...
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.061 Beiträge
 
Delphi 12 Athens
 
#7

AW: Datenmodul alle Queries in einem schliessen

  Alt 28. Nov 2022, 11:30
Es würde ja schon reichen, Datenmodul wegzulassen. Self ist ja das Datenmodul, welches der Variable Datenmodul nach dem Create zugewiesen wird.
Das gilt aber nur, wenn der Eventhandler auch in dem Datenmodul liegt. Er kann aber auch in jeder anderen Objektinstanz verdrahtet sein. Dann wäre Sender die bessere Alternative, wenn auch mit einem Cast.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:32 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