Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TADOConnection - Zugriffsverletzung ab Zeile 1318 in Table (https://www.delphipraxis.net/136116-tadoconnection-zugriffsverletzung-ab-zeile-1318-table.html)

Delphi_Atze 23. Jun 2009 20:54

Datenbank: *.mdb • Zugriff über: TADOConnection

TADOConnection - Zugriffsverletzung ab Zeile 1318 in Table
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo :)

Ich bin auf ein außerordentliches Problem gestoßen. Ich habe eine TADOConnection auf einer *.mdb Datenbank verknüpft. Diese lasse ich mir über eine DataSource in einem TDBGrid anzeigen. Mit einer For-Schleife durchsuche ich ein ADOTable (welches ich mit der TADOConnection verbudnen habe) nach bestimmten Werten. Diese lasse ich mir in einer Listbox anzeigen.

Jetzt zu meinem Problem.
in der Zeile 1318 gibt mir das Programm eine Zugriffsverletzung. Habe das ganze mal als Anhang beigefügt.
Das komische ist, es ist immer in Zeile 1318. Vor, nach und bei dieser Zeile sind keine Auffälligkeiten erkennbar. Das ganze Table umfasst rund 80000 (80k) Einträge.

hatte jemand schon mal das gleiche Problem oder hat jemand eine Idee?

Vielen vielen Dank
Gruß Sascha

mkinzler 23. Jun 2009 21:05

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
1. Warum For und keine While-Schleife
2. Wie groß ist ein Datensatz?
3. Es erschint mir nicht sinnvoll 80 000 Datensätze in ein Grid zu schreiben

Delphi_Atze 23. Jun 2009 21:12

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Ich habe gerade nochmal geschaut und ich habe eine while schleife verwendet, sorry.
Was genau meist du genau mit Datensatz? (bin noch neu in Sachen Datenbank).
Falls du die Zeilen meinst, die haben auch keine großen Unterschiede.
das Grid dient nur dazu es zu veranschaulichen, in dem final Programm wird das Grid wieder gelöscht.

mkinzler 23. Jun 2009 21:15

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Zitat:

Was genau meist du genau mit Datensatz? (bin noch neu in Sachen Datenbank).
Ein Datensatz entspricht einer Zeile. Wie viel enthält eine Zeile?

Delphi_Atze 23. Jun 2009 21:18

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
10 Datensätze pro Zeile

mkinzler 23. Jun 2009 21:20

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Du meinst 10 Felder? Alles Strings, wie lang?

Delphi_Atze 23. Jun 2009 21:24

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Ja gute Frage. Sind unterschiedlich, zwischen 50-80 insgesamt in allen 10 Feldern.

mkinzler 23. Jun 2009 21:32

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Insgesamt oder pro Feld?

10 * 50 = 500 Bytes pro Zeile
500 * 1318 = 659 000

Starke 600 KB sollte eigentlich noch kein Problem darstellen

Delphi_Atze 23. Jun 2009 21:35

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
also pro zeile maximal 80 zeichen. In die Richtung habe ich auch schon nachgedacht, aber deine Rechnung bestätigt meine Vermutung. Ich bin echt ratlos :( Danke schon mal für deine Bemühungen.

mkinzler 23. Jun 2009 21:36

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Liegt es vielleicht am Inhalt in dieser ominösen Zeile?
Zeigt er es in Access richtig an?

Delphi_Atze 23. Jun 2009 21:42

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
wird alles richtig angezeigt

alzaimar 24. Jun 2009 05:36

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Kann schon sein, das Access es richtig anzeigt. Vermutlich steht müll in dem Datensatz. Hatte ich auch mal. Lass dir mal beim durchlaufen der Tabelle jeweils die Zeilennummer (aka Datensatznr. bzw. "MyTable.RecNo") anzeigen.

hoika 24. Jun 2009 08:41

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Hallo,

was passiert, wenn du statt dem DBGrid ein normales TStringGrid benutzt ?


Heiko

Delphi_Atze 24. Jun 2009 15:33

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
@hoika
an dem Grid darf es nicht liegen, weil er durchläuft ja die Table und das grid dient nur zur Anschauung. Habe das Grid auch jetzt mal kurz entfernt und nochmal gestartet. hat sich nichts getan. auch wieder abbruch an der gleichen stelle.



@alzaimar

Hier mal meine Schleife mit deinem Tip:
Delphi-Quellcode:
ADOTable1.First; // auf 1. Datensatz
while not ADOTable1.Eof do
    begin
    i:=i+1;
    edit4.Text:=inttostr(ADOTable1.RecNo) ;
    ADOTable1.Next; // nächster Datensatz
    end;
edit4.text ist dann komischerweise 206

Danke an Alle bisher :)
Das muss doch zu schaffen sein :(

hoika 24. Jun 2009 18:04

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Hallo,

komprimiere die Access-Datei mal,
vielleicht wird dann der "kaputte" Datensatz repariert.

Vie sieht denn dein Connection-Stirng aus?
Vielleicht Ü/Ä oder sowas und wird über das falsche Charset geladen ?


Heiko

alzaimar 24. Jun 2009 19:46

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Bei deinem Test fehlt zwar die Initialisierung, und ich würde mir dann auch mal andere Feldinhalte anschauen, anhand der du den Datensatz direkt *vor* dem kaputten Datensatz anzeigen lassen kannst. Dann öffnest Du Access, lokalisierst die Zeile und löscht sie. Wenn das mit dem Grid von Access nicht geht, musst Du eben ein SQL-Kommando absetzen
SQL-Code:
Delete from Tabelle where EindeutigesFeld=<EinWert>

Delphi_Atze 24. Jun 2009 19:56

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
habe mir jetzt einmal eine frühere Version der mdb file geladen und jetzt bleibt er bei der zeile 1323 stehen :(

hoika 26. Jun 2009 06:46

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
Hallo,

hast du schon komprimiert ?

Welche unserer Vorchläge hast du noch ausprobiert ?

Lege mal ein neue Projekt an,
indem ausser dem connect wirklich nur diese eine Schleife steht,
aber ohne das EditX.Text
also etwas so


Delphi-Quellcode:
ADOTable1.First; // auf 1. Datensatz
while not ADOTable1.Eof do
    begin
    i:=i+1;
    ADOTable1.Next; // nächster Datensatz
    end;

Heiko

Delphi_Atze 26. Jun 2009 07:04

Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
 
ok mache ich, fahre gleich los, bin sontag abend wieder da und setzte mich gleich ran an die sache. ich gebe dir/euch bescheid, wenn es soweit ist. Danke dir :)


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