Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DataModule-Fehler : Zugriffsverletzung durch externe Methode (https://www.delphipraxis.net/124104-datamodule-fehler-zugriffsverletzung-durch-externe-methode.html)

fragile 14. Nov 2008 12:02

Datenbank: MS SQL Server • Version: 2005 • Zugriff über: ADO

DataModule-Fehler : Zugriffsverletzung durch externe Methode
 
Hallo,

ich habe meine Datenquellen nachträglich in ein Datamodule ausgelagert. Jetzt bekomme ich immer eine "Zugriffsverletzung" beim Start der Anwendung,
sobald eine Methode meines Hauptformulars versucht, auf die Datenquellen des Datenmodule-Forms zuzugreifen.

Sind die Objekte im Datamodule-Formular quasi "private" und daher von den Procedures des Hauptformulars nicht nutzbar ?

1000 Danke für Tipps an einen Delphi/OO-Anfänger...

Gruß
FrankG

ATSV 14. Nov 2008 12:05

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
rufst du die methoden im OnCreate auf? wenn ja dann pack das woanders hin denn das datenmodul wird erst nach der form erstellt

fragile 14. Nov 2008 12:06

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
Im OnShow ... kann ich die Erstellungsreihenfolge irgendwo festlegen ?

ATSV 14. Nov 2008 12:10

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
ok wenns im onShow ist kanns daran eig nicht liegen scheibst du auch immer
Delphi-Quellcode:
Datamodule1.
davor?

fragile 14. Nov 2008 12:10

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
Ich habe auch AfterScroll-Ereignisse auf den Datenquellen besetzt, muss quasi einen Filter über einem Table mitführen, sobald der Datencursor eines anderen Tables weiter"fährt"...außerdem setze ich je nach aktiviertem Tab die Datenquelle für meinen DBNavigator um...

fragile 14. Nov 2008 12:12

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
Das passiert im Hauptformular bei FormShow :

Delphi-Quellcode:
   Arbeitsfenster.ActivePage := Tab_Firma;
   Initialisieren(DataModule1.Firma_Dataset, DataModule1.restlicherTable_Firma);
Da wird z.b. der DBNavigator mit einer Datenquelle aus DataModule1 besetzt...an der Stelle gibts die Zugriffsverletzung... die TADOConnection auf DataModule1 lasse ich immer aktiviert...

nahpets 14. Nov 2008 12:16

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
Hallo,

wann genau passiert der Fehler? Beim Programmstart?

Dann liegt das daran, dass vom Formular aus schon Routinen im Datamodul aufgerufen werden, wenn das Datamodul noch nicht existiert. Weise die Ereignisroutinen im Formular erst zu Laufzeit zu, nachdem alles erstellt wurde.
Das kannst Du (unelegant) in der DPR-Datei vor Application.Run einfügen. OnCreate, OnShow... sind nicht geeignet.
Eventuell ginge es auch im OnCreate des Datamoduls, wenn das Formular definitiv vorher erstellt ist.

ATSV 14. Nov 2008 12:19

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
also ich hatte zumindest nen ähnlichen fehler(weiß nciht mehr genau was das für einer war) in meinem aktuellen projekt. dann hab ich einfach den code vom Form1.OnCreate ins Datamodule1.OnCreate gelegt und es geht einwandfrei.

fragile 14. Nov 2008 12:28

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
Der Fehler kommt nur am Anfang 4 mal , das Auslagern des Codes in DataModule1.OnCreate hat nichts gebracht.
Außerdem greift das AfterScroll-Ereignis nicht mehr so wie vor der Auslagerung ins Datenmodul, erst wenn ich einmal weiterscrolle greift der Filter;
vorher griff der Filter-Subqery schon beim Initialisieren (bei gleichem Code und gleicher Ereignis-Struktur)...

fragile 14. Nov 2008 12:33

Re: DataModule-Fehler : Zugriffsverletzung durch externe Met
 
Ok,

bin einen Schritt weiter - keine Zugriffsverletzung mehr.

Folgende Konstellation:

Initalisierungscode weiterhin im OnCreate des DataModuls.
In "Projekt/Formulare" steht DataModule als letztes in der Reihe.

Allerdings kommt jetzt 4 mal "No Connection string" , muss ich wohl die DBConnect-Komponente shcon zur Entwurfszeit aktivieren ?!?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.
Seite 1 von 2  1 2      

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