DbZap() - Fehler
Moderator: Moderatoren
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
DbZap() - Fehler
Moin Forum,
ich habe ein sporadisch auftretendes Problem mit dem ZAP-Befehl:
Auf einem recht schnellen XP-Rechner ohne Netzwerkanschluss, XBase 1.9 mit aktuellen Hotfixes, kommt es beim "zappen" einer (natürlich exclusive geöffneten) DBF/NTX-Tabelle zu einem Fehler - siehe Fehlerprotokoll.
Der Code ist simpel:
(...)
SELECT [TABLE]
ZAP
(...)
Nach dem Fehler sieht die DBF/NTX-Tabelle so aus:
XARTIK.DBF 355 18.10.2007 11:30 -a--c
XARTIK.DBT 512 18.10.2007 11:30 -a--c
XARTIKK1.NTX 2.048 18.10.2007 11:28 -a--c
XARTIKK2.NTX 2.048 18.10.2007 11:28 -a--c
XARTIKK3.NTX 2.048 18.10.2007 11:28 -a--c
XARTIKK4.NTX 114.688 18.10.2007 11:02 -a--c
XARTIKK5.NTX 172.032 18.10.2007 11:02 -a--c
286 k in 7 Dateien
Es sieht so aus, als wären DBF, DBT und die ersten 3 Schlüssel gelöscht worden, beim 4. und 5. hat's nicht geklappt.
Aus der XBase-Newsgroup habe ich den Tipp bekommen, über die Funktion DbeInfo() mit den Parametern DBFDBE_LIFETIME und LOCKRETRY zu experimentieren.
Das ist aber nicht so einfach, weil ich es gerade einmal geschafft habe, den Fehler auf meinem PC zu reproduzieren. Außerdem habe ich keine Beschreibung für die Benutzung von DbeInfo() mit allen Parametern gefunden.
Hat jemand einen Tipp für mich, wie ich das Problem lösen kann?
Danke + Gruß,
Ingo
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "C:\HARMONIA\Progs_HV\Vertrieb_hv.EXE" Datum: 16.10.2007
08:30:55
Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 2
------------------------------------------------------------------------------
oError:args :
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Interne Datenstrukturen beschädigt
oError:filename :
oError:genCode : 41
oError:operation : DbZap
oError:osCode : 0
oError:severity : 2
oError:subCode : 5
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von HV_DATENIMPORT_IKSGETDIALOG:AUFBAU_VARTAU(349)
Aufgerufen von HV_DATENIMPORT_IKSGETDIALOG:DATEIEN_IMPORTIEREN(212)
Aufgerufen von (B)HV_DATENIMPORT_IKSGETDIALOG:DEF_BUTTONS(837)
Aufgerufen von MAIN(372)
ich habe ein sporadisch auftretendes Problem mit dem ZAP-Befehl:
Auf einem recht schnellen XP-Rechner ohne Netzwerkanschluss, XBase 1.9 mit aktuellen Hotfixes, kommt es beim "zappen" einer (natürlich exclusive geöffneten) DBF/NTX-Tabelle zu einem Fehler - siehe Fehlerprotokoll.
Der Code ist simpel:
(...)
SELECT [TABLE]
ZAP
(...)
Nach dem Fehler sieht die DBF/NTX-Tabelle so aus:
XARTIK.DBF 355 18.10.2007 11:30 -a--c
XARTIK.DBT 512 18.10.2007 11:30 -a--c
XARTIKK1.NTX 2.048 18.10.2007 11:28 -a--c
XARTIKK2.NTX 2.048 18.10.2007 11:28 -a--c
XARTIKK3.NTX 2.048 18.10.2007 11:28 -a--c
XARTIKK4.NTX 114.688 18.10.2007 11:02 -a--c
XARTIKK5.NTX 172.032 18.10.2007 11:02 -a--c
286 k in 7 Dateien
Es sieht so aus, als wären DBF, DBT und die ersten 3 Schlüssel gelöscht worden, beim 4. und 5. hat's nicht geklappt.
Aus der XBase-Newsgroup habe ich den Tipp bekommen, über die Funktion DbeInfo() mit den Parametern DBFDBE_LIFETIME und LOCKRETRY zu experimentieren.
Das ist aber nicht so einfach, weil ich es gerade einmal geschafft habe, den Fehler auf meinem PC zu reproduzieren. Außerdem habe ich keine Beschreibung für die Benutzung von DbeInfo() mit allen Parametern gefunden.
Hat jemand einen Tipp für mich, wie ich das Problem lösen kann?
Danke + Gruß,
Ingo
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "C:\HARMONIA\Progs_HV\Vertrieb_hv.EXE" Datum: 16.10.2007
08:30:55
Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 2
------------------------------------------------------------------------------
oError:args :
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Interne Datenstrukturen beschädigt
oError:filename :
oError:genCode : 41
oError:operation : DbZap
oError:osCode : 0
oError:severity : 2
oError:subCode : 5
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von HV_DATENIMPORT_IKSGETDIALOG:AUFBAU_VARTAU(349)
Aufgerufen von HV_DATENIMPORT_IKSGETDIALOG:DATEIEN_IMPORTIEREN(212)
Aufgerufen von (B)HV_DATENIMPORT_IKSGETDIALOG:DEF_BUTTONS(837)
Aufgerufen von MAIN(372)
- andreas
- Der Entwickler von "Deep Thought"
- Beiträge: 1902
- Registriert: Mi, 28. Sep 2005 10:53
- Wohnort: Osnabrück
- Hat sich bedankt: 4 Mal
- Kontaktdaten:
Hallo Ingo,
ich weiss nicht, ob es in deinem Programm passt, aber ich erzeuge solche Dateien immer neu.
Versuch es mal ohne Indexes zu machen. Vielleicht ist ein Index defekt, dann evtl. Indexes immer neu erzeugen.
Lifetime kannst du so sethen:
Die Beschreibung dafür findest du in Hilfe unter der jeweiligen DBE. z.B. nach DBFDBE suchen.
ich weiss nicht, ob es in deinem Programm passt, aber ich erzeuge solche Dateien immer neu.
Versuch es mal ohne Indexes zu machen. Vielleicht ist ein Index defekt, dann evtl. Indexes immer neu erzeugen.
Lifetime kannst du so sethen:
Code: Alles auswählen
DbeSetDefault( "DBFNTX" )
DbeInfo( COMPONENT_DATA, DBFDBE_LIFETIME, 5 )
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- ingo
- UDF-Programmierer
- Beiträge: 62
- Registriert: Fr, 19. Okt 2007 10:20
- Wohnort: Lüneburg
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
Moin Rolf,
ja - die NTX-Dateien werden beim ZAP "geleert" - so wie die ersten 3...
Hi Andreas,
danke für den Tipp - ich hatte gehofft, den Neuaufbau zu vermeiden (weil ich tendenziell faul bin,) aber dann gehe ich wohl dran.
Die DBFDBE_LIFETIME interpretiere ich so, dass es eigentlich keinen Zusammenhang mit meinem Problem geben dürfte. Bei der Voreinstellung von 50 Millisekunden würde das ja bedeuten, dass es zum Fehler kommt, weil zwischen dem Schließen der DBF/NTX-Tabelle, dem erneuten EXCLUSIVE-Öffnen und dem Ausführen des ZAP weniger als diese 50 ms vergehen. Dazwischen liegt das schließen eines Fensters, das Öffnen eines Neuen Fensters und ein Mausklick auf einen "Start"-Button. Und so schnell ist kein Mensch, oder?
Jedenfalls danke!
Ingo
ja - die NTX-Dateien werden beim ZAP "geleert" - so wie die ersten 3...
Hi Andreas,
danke für den Tipp - ich hatte gehofft, den Neuaufbau zu vermeiden (weil ich tendenziell faul bin,) aber dann gehe ich wohl dran.
Die DBFDBE_LIFETIME interpretiere ich so, dass es eigentlich keinen Zusammenhang mit meinem Problem geben dürfte. Bei der Voreinstellung von 50 Millisekunden würde das ja bedeuten, dass es zum Fehler kommt, weil zwischen dem Schließen der DBF/NTX-Tabelle, dem erneuten EXCLUSIVE-Öffnen und dem Ausführen des ZAP weniger als diese 50 ms vergehen. Dazwischen liegt das schließen eines Fensters, das Öffnen eines Neuen Fensters und ein Mausklick auf einen "Start"-Button. Und so schnell ist kein Mensch, oder?
Jedenfalls danke!
Ingo
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: DbZap() - Fehler
hi,
Zu deinem Problem : Nutze doch einfach mal die "suchen" Funktion
hier im Forum und gib DBESYS ein
gruss by OHR
Jimmy
schön das du den Weg hier ins Forum gefunden hast.ingo hat geschrieben: ich habe ein sporadisch auftretendes Problem mit dem ZAP-Befehl:
Zu deinem Problem : Nutze doch einfach mal die "suchen" Funktion
hier im Forum und gib DBESYS ein
gruss by OHR
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
bei exclusiver Öffnung dürften die Lifetime etc. Parameter eigentlich keine Rolle spielen. Gibt es die bei NTX überhaupt ? (ich habe sie noch nie verwendet.)
Zum ZAP - es setzt normalerweise alles zurück, außer den Inhalt von MEMO-Dateien. Die werden trotzdem immer größer. Daher verwende ich statt ZAP eine Kombination aus COPY und Umbenennen:
1. Exclusiv Öffnen
2. COPY to TEMP
3. delete file
4. name TEMP to ...
5. IF file("TEMP.DBF") -> Fehler
bei exclusiver Öffnung dürften die Lifetime etc. Parameter eigentlich keine Rolle spielen. Gibt es die bei NTX überhaupt ? (ich habe sie noch nie verwendet.)
Zum ZAP - es setzt normalerweise alles zurück, außer den Inhalt von MEMO-Dateien. Die werden trotzdem immer größer. Daher verwende ich statt ZAP eine Kombination aus COPY und Umbenennen:
1. Exclusiv Öffnen
2. COPY to TEMP
3. delete file
4. name TEMP to ...
5. IF file("TEMP.DBF") -> Fehler
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Hallo, Hubert.
Das ist falsch! Zap leert auch die Memodateien. Die Stelle, an der man Memodateien getrennt betrachten muß, ist das Pack beim physikalischen Löschen von Datensätzen. Da werden sie nämlich nicht angefaßt.Zum ZAP - es setzt normalerweise alles zurück, außer den Inhalt von MEMO-Dateien.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
OH MANN OH MANN ... da habe ich gestern aber einen Blackout gehabt.Tom hat geschrieben:Hallo, Hubert.
Das ist falsch! Zap leert auch die Memodateien. Die Stelle, an der man Memodateien getrennt betrachten muß, ist das Pack beim physikalischen Löschen von Datensätzen. Da werden sie nämlich nicht angefaßt.Zum ZAP - es setzt normalerweise alles zurück, außer den Inhalt von MEMO-Dateien.
Natürlich hat TOM völlig Recht. Ich dachte an Pack ... und hörte wohl den Kalk rieseln.
Gruß
Hubert
Hubert