Seite 1 von 2

Fehler im dbu

Verfasst: So, 07. Okt 2012 11:58
von Werner_Bayern
Servus,

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

Code: Alles auswählen

use blabla.dbf
? lastrec()
zeigt er mir die korrekte Anzahl an Datensätze an.
:?:

Re: Fehler im dbu

Verfasst: So, 07. Okt 2012 12:34
von brandelh
defekter Index ?

Re: Fehler im dbu

Verfasst: So, 07. Okt 2012 19:17
von Werner_Bayern
Servus Hubert,

nein, ist kein Index im Spiel. Einfach nur use wie oben beschrieben.

Re: Fehler im dbu

Verfasst: So, 07. Okt 2012 21:30
von UliTs
Kann es sein, dass eine andere DBE eingesetzt wird?

Re: Fehler im dbu

Verfasst: So, 07. Okt 2012 22:30
von Werner_Bayern
Nein. DBF. DBU benutzt ja keine eigene dbesys.
Siehe hierzu meine Eingangs-Nachricht. Verschiedenes Verhalten innerhalb DBU...

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 6:54
von AUGE_OHR
hi,

die Frage nach der DBE bezieht sich wohl darauf ob die DBF mit Cl*pper "erzeugt" wurde oder mit einer DBE.

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 11:06
von Alfred
Eventuell altes DBF-Problem?

Zuerst den Satzzeiger setzen(go top oder go bottom) und dann browse?

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 11:34
von Werner_Bayern
AUGE_OHR hat geschrieben:hi,

die Frage nach der DBE bezieht sich wohl darauf ob die DBF mit Cl*pper "erzeugt" wurde oder mit einer DBE.
Nein, entweder mit dbu oder mit Xbase++ und dbcreate.

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 11:37
von Werner_Bayern
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?

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 11:51
von georg
Hallo, Werner -


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.


Gruss,

Georg

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 12:28
von 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?
Vielleicht hat da einer richtig programmiert :)
und wollte ansonsten kompatibel bleiben.

lastrec() ist kein Befehl von dbase III.

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 16:10
von Werner_Bayern
Alfred hat geschrieben:Vielleicht hat da einer richtig programmiert :)
und wollte ansonsten kompatibel bleiben.

lastrec() ist kein Befehl von dbase III.

Gruß
Alfred
Verstehe gar nichts davon???? Und wer redet hier von dbase III???

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 16:19
von Werner_Bayern
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.
Servus Georg,

das wars! Danke!

Auszug aus der Main aus dbu.prg:

Code: Alles auswählen

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.

Komisch...

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 16:42
von Alfred
Verstehe gar nichts davon???? Und wer redet hier von dbase III???
Die Mutter aller DBF-Dateien ist nunmal dbase.
Erst später hat VFP den Verhau perfekt gemacht.

Was steht den im ersten Byte des Kopfes deiner Datei und was ist Standard bei Xbase?

Das Memofeld könnte auch der Übeltäter sein.

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 23:05
von Werner_Bayern
Servus Alfred,

die ersten beiden Bytes sind 131 und 12, auch bei der kopierten Version, die jetzt geht.

Hier die kompletten Header in Hex,
fehlerhafte Anzeige in DBU bei F2:

Code: Alles auswählen

83/0C/0A/08/BA/02/00/00/62/00/1A/00/00/00/00/00
korrekte Anzeige mit F2 nach dem kopieren:

Code: Alles auswählen

83/0C/0A/07/00/00/00/00/62/00/1A/00/00/00/00/00

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 23:17
von AUGE_OHR
Werner_Bayern hat geschrieben:die ersten beiden Bytes sind 131 und 12, auch bei der kopierten Version, die jetzt geht.
hm ... hat die DBF ein Memo ? Type "M" ? Länge 4 oder 10 ?

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 23:47
von Alfred
Laut meinem Programierbuch "Objektorientiertes Programmieren in C++"
von Erlenkötter und Reher bedeutet 83 folgendes:


"83 weist auf eine Datei von Clipper oder dbase III+ hin, zu der eine Memo-Datei
(gleicher Name, jedoch Erweiterung DBT) gehört."

Also eigentlich alles ok.

Welche Länge hat denn das Memofeld?

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Mo, 08. Okt 2012 23:57
von Alfred
Vielleicht hilft Dir diese Aufstellung weiter:

Byte-Offset / Länge/ Bedeutung

0 / 1 / Kennung
1 / 3 / Aktualisierungsdatum(JJMMTT)
4 / 4 / Satzahl
8 / 2 / Offset zum 1. Satz
10/ 2 / Satzlänge
12 / 20/ interne Verwendung
32 / 11/ 1. Feldname
44 / 4 / interne Verwendung
48 / 1/ Feldlänge
49 / 1/ Nachkommastellen
50 / 14/ interne Verwendung
64/ 11/ 2. Feldname

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Di, 09. Okt 2012 16:07
von Werner_Bayern
AUGE_OHR hat geschrieben:hm ... hat die DBF ein Memo ? Type "M" ? Länge 4 oder 10 ?
yep, 1 C "Name", 1 M "Text"

Re: Fehler im dbu

Verfasst: Di, 09. Okt 2012 16:10
von Werner_Bayern
Alfred hat geschrieben:Vielleicht hilft Dir diese Aufstellung weiter:

Gruß
Alfred
Dann wäre bei der "defekten" Datei die Satzzahl belegt und bei der "funktionierenden" Datei die Satzzahl mit 0 drin??

Re: Fehler im dbu

Verfasst: Di, 09. Okt 2012 16:19
von brandelh
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.

Re: Fehler im dbu

Verfasst: Di, 09. Okt 2012 18:12
von Alfred
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.

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Di, 09. Okt 2012 18:31
von Alfred

Re: DBase Memo Fields

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.

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Di, 09. Okt 2012 18:42
von Alfred
Ich habe mir die Testversion des "DBF Viewer 2000" installiert.
Meine Testdatei lies sich damit einwandfrei bearbeiten.

Vielleicht hilft dieses Programm bei der Fehlersuche.

Gruß
Alfred

Re: Fehler im dbu

Verfasst: Di, 09. Okt 2012 20:48
von Muecke
DBF Viewer 2000 ist ein feines Programm.
Was ich noch nicht kann, ist neue Felder hinzufügen, damit sie ansprechebar werden.

Ansonsten super.

Gruss Thomas