Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi AV bei normalem Programmstart, bei Single Step nicht (https://www.delphipraxis.net/76390-av-bei-normalem-programmstart-bei-single-step-nicht.html)

Christian Seehase 3. Sep 2006 15:53

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

AV bei normalem Programmstart, bei Single Step nicht
 
Moin Zusammen,

wie der Titel schon sagt erhalte ich beim Start meines Programmes, einzeln und aus der IDE heraus, eine AV.
Setze ich auf Application.Run einen Breakpoint, und gehe im Einzelschritt durch das Programm, so geschieht dies, in Abhängigkeit der Geschwindigkeit des F7/F8-drückens, an verschiedenen Stellen, oder aber auch gar nicht.

Das erste mal tritt der Fehler beim Aufruf von TADOQuery.Open auf.
Setze ich einen Breakpoint auf diese Zeile und führe sie, nach einer kurzen Wartezeit, mit F8 aus: Alles OK.
An einer andere Stelle konnte ich dann beobachten, dass der Value eines Feldes der TADOTable erst wegen Zugriffsverletzung nicht angezeigt werden konnte, dann, nach einer kleinen Wartezeit auf dieser Zeile, wurde der Wert korrekt ausglesen.

Das Programm enthält, auf einem TDataModule je eine TADOConnection, TADOTable, TADOQuery und TDataSource.
Zur Anzeige/Bearbeitung enthält das Programm einige TDBEdit-Komponenten und einen TDBNavigator.
Bis zu einer Änderung hat der Zugriff auch funktioniert.

Was ich geändert habe:
Im Enterprise-Manager habe ich die anzusprechende Tabelle umbenannt, und um ein paar Felder ergänzt.
Das Umbenennen liess sich problemlos durchführen, da es keine Abhängigkeiten gab (und gibt).

Dann habe ich im Programm den Tabellennamen angepasst, und die neuen Felder hinzugefügt (TADOTable gelöscht, hinzugefügt, Connection und TableName gesetzt, und die Felder über "Add all fields" hinzugefügt.)

Durch Verwendung der Debug-DCUs konnte ich feststellen, dass die AV beim Aufruf von GetRecord in TDataSet.Resync auftritt.

Nachdem ich die Fehlermeldung bestätigt habe, funktioniert alles wie vorher...

Hat jemand eine Idee, was das sein kann?

[EDIT]
Ich habe auch schon mal die DCUs und EXE gelöscht, und einen Build durchgeführt: Kein Erfolg.
[/EDIT]

Christian Seehase 3. Sep 2006 17:01

Re: AV bei normalem Programmstart, bei Single Step nicht
 
Moin Zusammen,

so, Problem gelöst:
Es lag daran, dass ich noch die Felder der TADOTable im Programm, und angesprochen hatte.
Nach dem Tausch gegen die Felder der TADOQuery tritt das Problem nicht mehr auf.

(Auch wenn das, zugegebenermassen, noch nicht erklärt, warum der Fehler beim langsamen Durchsteppen nicht auftritt :gruebel:)

Bernhard Geyer 4. Sep 2006 06:40

Re: AV bei normalem Programmstart, bei Single Step nicht
 
Ich würde dir empfehlen nur TADODataset zu verwenden. TADOQuery und TADOTable sind nur für wegen der einfacheren Portierung von BDE-Anwendungen vorhanden und haben noch hier und da Macken die TADODataset nicht besitzt.

Christian Seehase 4. Sep 2006 12:49

Re: AV bei normalem Programmstart, bei Single Step nicht
 
Moin Bernhard,

danke für den Tip :thumb:

Da ich ja erst in den Anfängen stecke, kann ich das auch noch problemlos ändern.

Mir ging es halt darum SQL verwenden zu können, und hatte deshalb TADOQuery verwendet, und mir TADODataSet garnicht erst näher angesehen :oops: :wall:

Dann werde ich es mal mit TADODataSet (für SELECT) und TADOCommand (für den Rest) versuchen.


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