Fehler im dbu

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Fehler im dbu

Beitrag 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.
:?:
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fehler im dbu

Beitrag von brandelh »

defekter Index ?
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag von Werner_Bayern »

Servus Hubert,

nein, ist kein Index im Spiel. Einfach nur use wie oben beschrieben.
es grüßt

Werner

<when the music is over, turn off the lights!>
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Fehler im dbu

Beitrag von UliTs »

Kann es sein, dass eine andere DBE eingesetzt wird?
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag von Werner_Bayern »

Nein. DBF. DBU benutzt ja keine eigene dbesys.
Siehe hierzu meine Eingangs-Nachricht. Verschiedenes Verhalten innerhalb DBU...
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler im dbu

Beitrag 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.
gruss by OHR
Jimmy
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag von Alfred »

Eventuell altes DBF-Problem?

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

Gruß
Alfred
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag 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.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag 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?
es grüßt

Werner

<when the music is over, turn off the lights!>
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Fehler im dbu

Beitrag 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
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag 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
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag 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???
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag 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...
es grüßt

Werner

<when the music is over, turn off the lights!>
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag 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
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag 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
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fehler im dbu

Beitrag 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 ?
gruss by OHR
Jimmy
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag 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
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag 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
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag 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"
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fehler im dbu

Beitrag 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??
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fehler im dbu

Beitrag 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.
Gruß
Hubert
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag 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
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag 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
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Re: Fehler im dbu

Beitrag 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
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: Fehler im dbu

Beitrag 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
Antworten