![]() |
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 |
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 |
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. |
Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
Zitat:
|
Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
10 Datensätze pro Zeile
|
Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
Du meinst 10 Felder? Alles Strings, wie lang?
|
Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
Ja gute Frage. Sind unterschiedlich, zwischen 50-80 insgesamt in allen 10 Feldern.
|
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 |
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.
|
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? |
Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
wird alles richtig angezeigt
|
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.
|
Re: TADOConnection - Zugriffsverletzung ab Zeile 1318 in Tab
Hallo,
was passiert, wenn du statt dem DBGrid ein normales TStringGrid benutzt ? Heiko |
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:
edit4.text ist dann komischerweise 206
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; Danke an Alle bisher :) Das muss doch zu schaffen sein :( |
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 |
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>
|
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 :(
|
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 |
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 06:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz