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 2 von 3     12 3      
TOmega

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

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

  Alt 4. Feb 2007, 16:53
Ich schiebe das Testprojekt mit einer leeren Tabelle in den Anhang. Ihr müsst die Tabelle aber erst mit ein paar tausend Datensätzen füllen, um den Fehler eventuell nachvollziehen zu können. Mit der leeren Tabelle kann ich auch jede Menge Datensätze ohne Probleme anhängen. Übrigens kan ich vorhandene Datensätze problemlos so viel und so oft verändern wie ich will. Auch Löschen von Datensätzen funktioniert (eigentlich logisch, da die Datensätze ja nur markiert und nicht entfernt werden). Schwierigkeiten macht nur die Vergrösserung der Tabelle oder anders gesagt die Veränderung der Anzahl der Datensätze.

Ich arbeite derzeit mit den BDE-Versionen 5.1.1 und 5.2. (Rechnerabängig)

In meiner Verzweiflung habe ich übrigens gerade mal auf einen Testrechner ein nacktes Windows installiert und dort probiert. Erfolg = 0;
Angehängte Dateien
Dateityp: zip testprojekt_171.zip (7,6 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
marabu

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

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

  Alt 4. Feb 2007, 18:18
Ich kann den Fehler bestätigen. Ich habe dein Testprojekt so erweitert, damit ich die Datensätze nicht alle von Hand eingeben muss. Im ersten Durchlauf wurden problemlos 5.000 Datensätze erzeugt (leer bis auf LFDNR). Im zweiten Durchlauf wurden noch 1.310 Datensätze angehängt, bevor der von dir beobachtetete Lesefehler auch bei mir auftrat.

Dass der Fehler nicht permanent auffällt mag daran liegen, dass, wenn überhaupt noch mit der BDE gearbeitet wird, überwiegend das Paradox-Format verwendet werden dürfte.

Soweit erstmal...
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#13

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

  Alt 4. Feb 2007, 18:37
Schon mal dran gedacht, Native zuzugreifen, d.h. ohne BDE? Auf Torry gibt's einige freie Komponenten für DBase (allerdings ohne Multiindex (*.mdx) files)
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#14

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

  Alt 4. Feb 2007, 18:42
Wenn er schon sein Projekt von der BDE weg entwickelt, sollte er gleich eine richtige Datenbank verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#15

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

  Alt 4. Feb 2007, 18:43
Ich kann den Fehler nicht reproduzieren. Ich habe mit geändertem Code im FormShow zunächst 20.000 Sätze angelegt (Nach manueller Anlage eines "Beispielsatzes" zum Klonen). Dann wieder einen Satz manuell angelegt und gefüllt. Dann in 200er Schritten weiter. Alles funktioniert. Code für den ersten Durchgang:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
const
  MaxRecCount : integer = 20000;
var
  aRecord : array of variant;
  i,j : integer;
begin
 Table1.Open;
 if Table1.RecordCount < 10 then
 begin
    Table1.First;
    SetLength(aRecord, Table1.FieldCount);
    For j := 0 to Table1.FieldCount-1 do
    begin
      aRecord[j] := Table1.Fields[j].Value;
    end;

    for i := 0 to MaxRecCount - 1 do
    begin
      Table1.Insert;
      For j := 0 to Table1.FieldCount-1 do
      begin
        Table1.Fields[j].Value := aRecord[j];
      end;
      Table1.Post;
    end;

 end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
TOmega

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

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

  Alt 4. Feb 2007, 19:02
@marabu:

Es ist schon mal gut, das jemand das Problem nachvollziehen kann. Wenn Deine Vermutung richtig ist, gibt es doch einen Bug in der BDE und die Umstellung auf Paradox sollte das Problem lösen (schön wär's).

@webcss:

1990 lief das Ganze noch unter DOS mit PowerBasic ohne Index. Mittlerweile ist der Index aber Dreh- und Angelpunkt in meinem Projekt. Ich denke die Umstellung auf Paradoxtabelle wäre einfacher.

@mkinzler:

Was meinst Du mit "richtiger Datenbank" ?

@Union:

Auf den ersten Blick sehe ich nur den Unterschied, dass Du mit Insert arbeitest und nicht wie ich mit Append oder AppendRecord. Ich weiss nicht welche Methode bei manueller Eingabe in DBGrid angewendet wird, aber ich vermute mal auch Append.
  Mit Zitat antworten Zitat
marabu

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

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

  Alt 4. Feb 2007, 19:04
Inzwischen habe ich das Problem etwas untersucht und weitere Erkenntnisse: Der Lesefehler betrifft nicht die Tabelle, sonder den structural index file (MDX). Da ich alle Datensätze bis auf LFDNR leer lasse, entarten die vierzehn Feld-Indizes recht schnell. Eventuell gibt es da ein Limit. Wenn ohne Indexdatei gearbeitet wird, dann gibt es auch keine Probleme.

Freundliche Grüße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#18

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

  Alt 4. Feb 2007, 19:05
Bei einer richtigen Datenbank wird werden die Daten von einem Datenbankserver verwaltet. Cleinet fragt nur benötigte Daten an und nur diese werden an ihn übertragen. Bei filebasierten Datenbanken (wie z.B. dBase, Paradox, Access, ...) findet die Filterung am Client statt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#19

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

  Alt 4. Feb 2007, 19:12
Es könnte auch ein sog. Magic Number Problem sein. Das war jedenfalls früher mal ebei dBase eines. D.h. wenn ein Indexeintrag (und dann evtl. in Abhängigkeit vom alloziierten Speicher) eine definierte Grösse erreicht (z.B. 16384 o.ä) gibt es aufgrund eines Treiberbugs einen Overflow, der zum Absturz führt. Das kann man, wenn einem die kritische Größe nicht bekannt ist, durch Ausprobieren herausfinden: Schrittweises Vergrößern, oder wenn möglich, Verkleinern der indexierten Felder, damit nie eine solche Blockgröße auftreten kann.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
TOmega

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

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

  Alt 4. Feb 2007, 19:31
@mkinzler:

Mit dem Einrichten eines Datenbankservers würde ich wirklich Neuland betreten.
Es hört sich aber auch so an, als ob die Installation meiner Anwendung komplizierter werden würde, wenn ich das Programm weitergeben möchte.
Im Augenblick kann ich meine Anwendung ohne Installation von einem USB-Stick an jedem Rechner ausführen, selbst wenn die BDE nicht installiert ist. Ich muss nur die BDE-DLL's im Arbeitsverzeichnis haben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:52 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