AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Lesefehler beim Anhängen von Datensätzen in dBase Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Lesefehler beim Anhängen von Datensätzen in dBase Datenbank

Ein Thema von TOmega · begonnen am 3. Feb 2007 · letzter Beitrag vom 9. Feb 2007
Antwort Antwort
Seite 1 von 3  1 23      
TOmega

Registriert seit: 26. Jan 2007
Ort: Berlin
37 Beiträge
 
Turbo Delphi für Win32
 
#1

Lesefehler beim Anhängen von Datensätzen in dBase Datenbank

  Alt 3. Feb 2007, 11:49
Datenbank: dBase • Zugriff über: TTable
Seit einiger Zeit kämpfe ich mit einem Problem, und hoffe hier vielleicht einen Tipp zu bekommen.
In meinem Delphi-Programm nutze ich eine Dbase-Datenbankdatei. Dazu habe ich eine Datasource angelegt, mit einer Table verbunden und nutze ein DBGrid zur Anzeige, also nichts Kompliziertes. Datensätze können automatisch oder manuell hinzugefügt werden.
Anfangs lief alles wie gewünscht. Die Probleme begannen mit steigender Datensatzanzahl (inzwischen über 27000). Nach dem Anhängen von ca. 10-12 Datensätzen bricht das Programm mit einem Lesefehler der *.dbf Datei ab. Es hilft nur noch ein Neustart der Anwendung. Der zuletzt angehägte Datensatz ist dann nur unvollständig ausgefüllt. Nach einigen dieser "Abstürze" ist dann auch die Index-Datei hinüber und hat sich mächtig "aufgebläht". Ein Zeitproblem beim Speichern schliesse ich aus, da der Fehler auch bei manueller Eingabe auftritt.
Kennt jemand dieses Problem ? Gibt es vielleicht einen Bug in der BDE ?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 3. Feb 2007, 13:44
Herzlich willkommen in der Delphi-PRAXiS, TOmega.

Wie sorgst du für das sichere Speichern deiner Daten?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
TOmega

Registriert seit: 26. Jan 2007
Ort: Berlin
37 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 3. Feb 2007, 14:49
Hallo marabu, danke für die schnelle Antwort.

Ich bin natürlich davon ausgegangen, dass das Speichern des Caches automatisch erfolgt.
Wenn ich Dich richtig verstehe, soll ich durch regelmässiges Aufrufen der Methode FlushBuffers für das Eintragen der zwischengespeicherten Daten sorgen. Ich habe das versucht, leider ohne Erfolg.

Wenn ich sage, dass das Problem nach ca. 10 Datensätzen auftritt, heisst das auch, ich muss das nicht am Stück tun. Wenn ich heute 9 Datensätze anhänge geht alles glatt und morgen bekomme ich dann schon nach dem ersten Datensatz das Problem.
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#4

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 3. Feb 2007, 15:22
Hallo TOmega,

wie sehen denn Deine BDE-Einstellungen aus?

Gruß
HaJo
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
TOmega

Registriert seit: 26. Jan 2007
Ort: Berlin
37 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 3. Feb 2007, 19:48
Hallo Hajo,
im Grunde sind es weitestgehend die Standardeinstellung der BDE:

LOCAL SHARE = false
MINBUFSIZE = 128
MAXBUFSIZE = 2048
LANGDRIVER = dBase DEU cp437
MAXFILEHANDLES = 48
LOW MEMORY USAGE LIMIT = 32
DEFAULT DRIVER = DBASE
SHAREDMEMSIZE = 2048

Ich hoffe, das sind die Werte, die Dich interessieren.
Gruß TOmega
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 3. Feb 2007, 20:47
Hallo,

wenn sich dein Programm und die BDE-Konfiguration nach den ersten 25.000 Datensätzen nicht geändert haben und bis dahin alles problemlos lief, glaube ich nicht an eine fehlerhafte Einstellung. Du arbeitest nach einem Lesefehler doch hoffentlich nicht einfach weiter? Womit hast du die defekte DBF-Datei analysiert und repariert? Welche Version der BDE setzt du ein?

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 3. Feb 2007, 20:49
Hast Du einen Virenscanner der auch deinen dBase-Analysiert?
Falls ja, nimm diese Dateiextension aus dem Check heraus.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
TOmega

Registriert seit: 26. Jan 2007
Ort: Berlin
37 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 3. Feb 2007, 23:58
@Bernhard Geyer:

Mein Virenscanner analysiert keine *dbf oder *mdx-Dateien. Testweise habe ich den Virenscanner auch mal komplett deaktiviert.

@marabu:

Ich habe mal mit einem Hex-Editor den Header und die letzten Datensätze der dBase-Datei untersucht und keinen Fehler in der Datenstruktur festgestellt. Nur der letzte Datensatz ist nicht vollständig ausgefüllt, was ich aber nach dem Neustart meiner Anwendung nachholen kann.
Ausserdem habe ich schon mehrfach mit dBase die Datenbank gepackt, also gelöschte Datensätze entfernt, und sortiert, wobei dBase ja eine komplett neue Datei erzeugt.
Es leidet also immer nur die Index-Datei und die habe ich auch schon mehrfach mit der Borland Datenbankoberfläche neu erzeugt. Mittlerweile habe ich eine Indexreparatur mit:

 DBIRegenIndexes(Table1.Handle); in mein Programm aufgenommen.

Ursprünglich angefangen habe ich das Projekt vor Jahren mal unter Delphi 2. Es hat also schon verschiedene Versionen von Delphi, BDE und Betriebssystemen erlebt. Das Problem schein absolut Versionsunabhängig zu sein und tritt auch auf all meinen Rechnern auf.

Übrigens nutzt ein Bekannter von mir mein Programm auch. Er hat aber erst etwa 4000 Datensätze und keine Schwierigkeiten z.B. 200 Datensätze maschinell anfügen zu lassen (noch nicht). Darum glaube ich nicht an einen Programmfehler. Ich bin gespannt, wann bei meinem Bekannten die ersten Probleme auftauchen.
  Mit Zitat antworten Zitat
TOmega

Registriert seit: 26. Jan 2007
Ort: Berlin
37 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 4. Feb 2007, 13:26
Um sicher zu gehen, dass sich bei meinem Projekt in dem Codegewusel nicht doch irgendwo ein Fehler eingeschlichen hat, habe ich ein simples Testprojekt erstellt, also nur Datasource, Table und DBGrid. Der einzige Programmcode besteht also aus Table.Open; beim Start und beim Beenden Table.Close; Was kann man da noch falsch machen?
Ich habe also das Testprojekt gestartet und manuell im DBGrid Datensätze zugefügt und nach dem 11. oder 12. Datensatz wird wieder mit der Fehlermeldung "Lesefehler Datei: ....*.dbf" abgebrochen. Will man weiterarbeiten kommt der Fehler "Datenstruktur fehlerhaft". Erst nach Neustart der Anwendung kann man weitermachen (für die nächsten 12 Datensätze).
Hatte denn wirklich noch niemand ein ähnliches Problem oder ein Idee ?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Lesefehler beim Anhängen von Datensätzen in dBase Datenb

  Alt 4. Feb 2007, 13:41
Hallo,

stelle bitte mal dein Testprojekt zur Verfügung. Wenn die Test-Tabelle nicht im Programm erzeugt wird, dann packe sie als Leertabelle dazu. Welche Version der BDE hast du im Einsatz?

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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