hatte das schon mal wer, wenn ich mittels DBU (Alaska-Version, also mit Xbase++ kompiliert) eine dbf öffne, zeigt sie mir keine Datensätze an. Hat 2 Felder, ein Textfeld und 1 Memofeld. Der Debugger gibt auch lastrec() mit 0 zurück, alias() passt.
Öffne ich sie über ein anderes Tool, werden die Datensätze angezeigt.
Setze ich ich die Main von Dbu ein
Alfred hat geschrieben:Eventuell altes DBF-Problem?
Zuerst den Satzzeiger setzen(go top oder go bottom) und dann browse?
Gruß
Alfred
Wie erklärt es sich dann, dass ich sie im dbu (siehe Eingangs-Nachricht) "automatisch" öffnen kann, lastrec wird korrekt angezeigt, öffne ich sie mit F2, lastrec() = 0?
bisher sind mir solche Probleme mit DBU nicht untergekommen.
Wenn Du die Datei über die Befehlszeile öffnen kannst, erstelle doch mal eine Kopie (Copy to) und versuche es mit der Kopie. Eventuell ist ja etwas im Kopf der Datei defekt, was zu dem seltsamen Verhalten führt.
Wie erklärt es sich dann, dass ich sie im dbu (siehe Eingangs-Nachricht) "automatisch" öffnen kann, lastrec wird korrekt angezeigt, öffne ich sie mit F2, lastrec() = 0?
Vielleicht hat da einer richtig programmiert
und wollte ansonsten kompatibel bleiben.
georg hat geschrieben:Wenn Du die Datei über die Befehlszeile öffnen kannst, erstelle doch mal eine Kopie (Copy to) und versuche es mit der Kopie. Eventuell ist ja etwas im Kopf der Datei defekt, was zu dem seltsamen Verhalten führt.
use textbl.dbf
cls
? lastrec()
copy to test.dbf
use
use test.dbf
? lastrec()
wait
Bringt beide Male die richtige Anzahl, das anschließende Öffnen mittels F2 eder test.dbf zeigt die Datensätze dann auch korrekt an! Die der textbl.dbf (mit F2) jedoch nach wie vor nicht, aus meinem Xbase++ Programm heraus schon, Visual-DBU auch.
Eine DBT Datei ist in 512 Byte Blocks "aufgeteilt".
In der DBF wir an der 10 Stelligen Position die Zahl des Offset zum ersten Block gespeichert,
wie er die folgenden Blocks findet weiß ich nicht auswendig, aber es gab schon Threads die sich mit dem Problem
teilweise defekter Memofelder befasst haben.
Im Grunde musst du die Datein Satz für Satz und Feld für Feld in eine mit gleicher Struktur umkopieren (zuerst alle nicht Memo Felder),
dann die dazu gehörigen Memos mit Fehlerbehandlung, dass das neue Feld auf "" oder "?" gesetzt wird sobald ein Fehler auftritt.
Dieser Fehler darf aber die restliche Felder und Sätze nicht ignorieren.
Dann wäre bei der "defekten" Datei die Satzzahl belegt und bei der "funktionierenden" Datei die Satzzahl mit 0 drin??
Das hatte ich auch nicht verstanden, darum hatte ich die Tabelle noch nachgereicht.
Ich habe heute eine Testdatei mit 2 Datensätzen(ein C und ein M Feld) mit VFP 3.0 angelegt und es steht bei mir
an der 5 Stelle ganz eindeutig die Satzzahl 2.
Postby whonea » Tue Jun 09, 2009 6:50 am
...........The text from memo files is held in file by the same name as the .dbf with a .fpt extension in the same directory as the .dbf file. The file format is fairly straight forward - entries begin at a fixed offset into the file and have header bytes with a serial id number followed by the length of the entry text so parsing the file is pretty simple - if tedious. ...........................
Vielleicht hilft diese Beschreibung bei der Fehlersuche.