Entwickler-Ecke

Datenbanken - Exception bei diesem Code?


D. Annies - So 09.08.09 19:37
Titel: Exception bei diesem Code?
Hi, Delpher,

bei dem folgenden Code - der klaglos compiliert wird - gibt es zur Laufzeit eine Zugriffsverletzung (bei Adresse 004EFBF3, Lesen von Adresse 00000058).
DaMod1 ist ein Datenmodul, die Tabelle kann ich irgendwie nicht in's DBGrid kriegen; auf die Daten selbst kann ich aber zugreifen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  showmessage('hi');  // <- wird noch angezeigt!
  DaMod1.ADOTbBJS.Connection := DaMod1.ADOConnection1;  // ab hier knallt es
  DaMod1.ADOTbBJS.Active := false;                      
    DaMod1.ADOTbBJS.TableName := 'bjsdbt.dbf';   //BundesJugendSpiele
  DaMod1.ADOTbBJS.active := true;
  dbgrid2.datasource.DataSet := DaMod1.ADOTbBJS;
    showmessage('hi2');
  dbgrid2.Hint := DaMod1.ADOTbBJS.TableName;
  showmessage('re unten: '+ DaMod1.ADOTbBJS.TableName);


Wer hat dazu eine Idee? Ich bin absolut ratlos, irgendetwas habe ich übersehen, aber was?

Gruß, Detlef


Xentar - So 09.08.09 20:02

Steht der Code zufällig im Form Create?
Wenn ja, kann es gut sein, dass es das Datenmodul an der Stelle noch nicht gibt, da dies erst danach erzeugt wird..

Darauf lässt zumindest die Adresse $00000058 schließen, weil diese sehr niedrig ist.


D. Annies - So 09.08.09 20:23

Hi, Xentar, ja, der Code steht in FormCreate - !

dann werde ich mal ändern - ich melde mich wieder,
Det

P.S. äh, wo sollte ich den Code denn hinstellen? :oops:


DelphiMarkus - So 09.08.09 20:30

Hallo!

Am besten in FormShow. So hat man mir es zumindest beigebracht und bisher hatte ich auch noch keine Probleme damit.
Probier es einfach mal aus, aber in FormShow sollte es gehen. :)


D. Annies - So 09.08.09 20:44

Danke dir - soweit gut, aber zur Laufzeit knallt es Lesen von Adresse 00000030 bei der folgenden Zeile:


Delphi-Quelltext
1:
DBGrid2.datasource.DataSet := DaMod1.ADOTbBJS;                    


Warum das?


Bernhard Geyer - So 09.08.09 21:12

user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
Danke dir - soweit gut, aber zur Laufzeit knallt es Lesen von Adresse 00000030 bei der folgenden Zeile:


Delphi-Quelltext
1:
DBGrid2.datasource.DataSet := DaMod1.ADOTbBJS;                    


Warum das?


Was sagt der Debugger zu DaMod1? Ich würde auf nil tippen -> Datenmodul ist noch nicht erzeugt.


D. Annies - So 09.08.09 21:16

Danke auch dir, Bernhard,

der Fehler ist jetzt weg - ich hatte die folgenden zwei Einträge vergessen:


Delphi-Quelltext
1:
2:
  DBGrid2.datasource auf DaMod1.DataSource1 setzen      im OI form1
  DaMod1.DataSource1.Dataset auf ADOTbBJSdbt setzen     im OI DaMod1


Na, ja, bin noch etwas neu bei ADO ...

bis denn, Detlef