BASE 8999

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

BASE 8999

Beitrag von GrillenHirni »

Guten Tag Ihr Lieben!

Anlässlich dem Anlegen einer Datei mit DBCREATE(L_PfadFile,L_aFeld) habe ich die FehlerMeldung subCode 8999.

Es handelt sich um eine Struktur mit 43 Feldern.

Ich arbeit mit einer LogDatei, wenn ich die lösche, wird sie an der gleichen Stelle vom gleichen Aufruf
angelegt.

Erstmal habe ich versucht, in der Struktur L_aFeld eine Inkonsistenz zu finden - eventuell ein Feld, welches mit
einer Ziffer anfängt oder eine Inkonsistenz bei der Bestimmung eines einzelnen Feldes. Falls ich da nichts übersehen
hab, ist die Struktur korrekt - sie wird übrigens auch von einer anderen Anwendung angelegt.

Auch was die ZugriffsBerechtigungen betrifft, habe ich keine Redundanzen gefunden.

Vom Umstand, dass die LogDatei vorgängig angelegt wird, leite ich ab, dass es nicht unbedingt an der Verzeichnis-
Angabe in L_PfadFile liegen muss.

Dann ist mir zum debuggen noch eingefallen, die Struktur zu reduzieren:

L_aFeld:={"TEST","C",12,0}

Nun erhalte ich eine FehlerMeldung mit subCode 8033 mit wenigstens einer Beschreibung:
"Datei kann nicht erzeugt werden"

Was kann ich noch tun...?

Für sachdienliche Hinweise werden wahlweise eine GratisTeilnahme an unserem WM-TippSpiel *) oder eine
Büroklammer (gebraucht) ausgesetzt.

Herzliche Grüsse!
Grilli



") man kann noch einsteigen - das 5:0 gestern hat niemand richtig getippt.


ERROR 8999
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "W:\Work\Soft\4_442 Xbase++ OOP\Standard\2_Buch\28_MTool\MTool.Exe"
Datum : 14.06.18 20:55:19

Xbase++ Version :Xbase++ (R) Version 1.90.355
Betriebssystem :Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args :
-> VALTYPE : C VALUE: NIL
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description :
oError:filename :
oError:genCode : 403
oError:operation : DbCreate
oError:osCode : 0
oError:severity : 2
oError:subCode : 8999
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von GENDBF(317)
Aufgerufen von ODBF:OPEN(0)
Aufgerufen von ADBFOPEN(0)
Aufgerufen von FIBDBFOPEN(122)
Aufgerufen von PROGRAMMMITARBEITERIN(564)
Aufgerufen von HAUPTMENU(0)
Aufgerufen von MAIN(0)



ERROR 8033
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "W:\Work\Soft\4_442 Xbase++ OOP\Standard\2_Buch\28_MTool\MTool.Dbg\MTool.Exe"
Datum : 15.06.18 09:56:27

Xbase++ Version :Xbase++ (R) Version 1.90.355
Betriebssystem :Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args :
-> VALTYPE : C VALUE: NIL
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Datei kann nicht erzeugt werden
oError:filename :
oError:genCode : 70
oError:operation : DbCreate
oError:osCode : 0
oError:severity : 2
oError:subCode : 8033
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von GENDBF(324)
Aufgerufen von ODBF:OPEN(1028)
Aufgerufen von ADBFOPEN(381)
Aufgerufen von FIBDBFOPEN(122)
Aufgerufen von PROGRAMMMITARBEITERIN(564)
Aufgerufen von HAUPTMENU(210)
Aufgerufen von MAIN(227)
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2821
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 94 Mal
Danksagung erhalten: 13 Mal

Re: BASE 8999

Beitrag von georg »

Hallo, GrillenHirni -


erste Vermutung: es mangelt an Rechten. Kannst Du anstelle des dbCreate() ein fCreate() durchführen und mal das Ergebnis anschauen?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: BASE 8999

Beitrag von brandelh »

wenn ich die Umschreibung richtig verstanden habe, gehst du davon aus, dass L_PfadFile richtig und problemlos ist,
da diese ( ? ) kurz zuvor gelöscht wurde ?

Dabei kann es aber zu Problemen mit dem Virenscanner oder dem cache kommen.

Eventuell habe ich das Problem aber auch nur falsch verstanden.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: BASE 8999

Beitrag von Tom »

Subcode 403: "Fieldname is not unique". Du hast einen Feldnamen doppelt oder der signifikante Anteil (11 Stellen oder so) ist nicht eindeutig, wiederholt sich aber.
Herzlich,
Tom
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: BASE 8999

Beitrag von Muecke »

Zeig doch mal wie du dies programmiert hast.

Ein paar Programmzeilen wäre doch hilfreich
Wie ist der Aufbau der Felder und wie willst du dies erzeugen?

Gruss
Thomas
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: BASE 8999

Beitrag von brandelh »

Tom hat geschrieben: Fr, 15. Jun 2018 11:23 Subcode 403: "Fieldname is not unique". Du hast einen Feldnamen doppelt oder der signifikante Anteil (11 Stellen oder so) ist nicht eindeutig, wiederholt sich aber.
Feldnamen sind max. 10 Zeichen lang.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: BASE 8999

Beitrag von Tom »

Oder 10, sdHd. Jedenfalls ist einer doppelt oder wiederholt sich im signifikanten Bereich. Es gibt also FELDNAMEXY1 und FELDNAMEXY2 oder so (die wären zu lang) oder zweimal "TEST" oder ähnlich.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: BASE 8999

Beitrag von Tom »

Ach so, zum zweiten Fehler:
Dann ist mir zum debuggen noch eingefallen, die Struktur zu reduzieren:
L_aFeld:={"TEST","C",12,0}
Die Struktur muss ein zweidimensionales Array sein:

Code: Alles auswählen

L_aFeld:={{"TEST","C",12,0}}
Herzlich,
Tom
Benutzeravatar
HaPe
1000 working lines a day
1000 working lines a day
Beiträge: 995
Registriert: So, 15. Nov 2015 17:44
Wohnort: 71665 Vaihingen-Enz
Hat sich bedankt: 17 Mal
Danksagung erhalten: 15 Mal

Re: BASE 8999

Beitrag von HaPe »

Zwischenfrage:
Wo in der Xbase-Hilfe findet man den Fehlertext zum Fehlercode?
Ich habe im Internet das hier gefunden:
http://www.alaska-software.com/scripts/ ... PDRID=6356

Das sollte mMn in der Xbase-Hilfe direkt zu finden sein :roll:
--
Hans-Peter
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: BASE 8999

Beitrag von Tom »

Wo in der Xbase-Hilfe findet man den Fehlertext zum Fehlercode?
Ich greife da auf eine Hilfedatei zu, die irgendwann mal die Runde gemacht hat, erstellt von Andreas Gehrs-Pahl und Vladimir Lahnenco. Sie ist allerdings alt, unvollständig und enthält auch ein paar Mutmaßungen. So oder so, besser als nichts.

Also, Grilli:

1. Du hast in der Originalstruktur mindestens zwei Feldnamen, die nicht eindeutig sind, also Doppelungen oder Wiederholungen bei den ersten 10 Buchstaben.
2. Deine Debug-Fassung funktioniert nicht, weil Dein Array da nur eindimensional ist. Es muss aber zweidimensional sein.

Alles klar?
Herzlich,
Tom
GrillenHirni
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Do, 18. Jul 2013 11:56
Kontaktdaten:

Re: BASE 8999

Beitrag von GrillenHirni »

Uff!

Danke für die wertvollen Hinweise!!

Hubert - Wegen L_PfadFile hatte ich angenommen, dass die Schwierigkeiten nicht unbedingt da entstehen,
weil die Log-Datei im gleichen Verzeichnis ohne Probleme angelegt wurde.

georg: Wegen irgendwelchen Rechten hatte ich auch Bedenken - ich versuche die betreffende Datei in einer
aufrufenden FUNCTION zu öffnen - wenn sie nicht vorhanden ist, soll sie erstellt werden. Dieses Problem
wäre für mich wahrscheinlich dann am aufwändigsten gewesen zum debuggen...

Inzwischen ist mir aufgefallen, dass ich zwar keine FeldNamen hatte, welche mit einer Ziffer beginnen -
der Name der kritischen Datei fängt sehr wohl mit einer Ziffer an: 11CEDEFK.Dbf. Damit hatte ich aber
bisher kaum Probleme...

Irgendwo in einer Meldung anno 2011 habe ich hier im Forum auch einen Link gefunden, wo eventuell
so dubiose FehlerMeldungen ausgelesen werden könnten. Die betreffende Seite ist aber leider nicht
mehr verfügbar - sonst hätte ich Euch eventuell nicht mit diesem Ärger belästigen müssen.

Dann hab ich versucht, dem Tom seine Tipps im Code abzufangen: FeldLänge länger als 10, doppelter
FeldName. Die Datei 11CEDEFK.Dbf hat 43 Felder. Das Feld 42 heisst XTITSTOTID. Das Feld 43 sollte
XTITHTOTID heissen - hiess aber auch XTITSTOTID! Nach der Richtigstellung des FeldNamens war
der Jubel auf dieser Seite der Leitung grenzenlos...!

Allerdings scheme ich mich jetzt ziemlich...

Für das TippSpiel ist es jetzt leider zu spät - es spielen schon Ägypten und Uruguay.

Was die gebrauchte BüroKlammer betrifft, ist es wie bei AktenZeichen XY: die Auslobung kann nur
einmal vergeben werden. Für die Zustellung kann hier die Adresse hinterlassen werden - der Preis
kann allerdings auch nach Voranmeldung persönlich abgeholt werden.

Es war für mich ein kniffliger, böser Error - ich hab etwa zwei Tage bitter damit gekämpft und
bin sehr erleichtert, dass ich jetzt produktiv weiter machen kann...

Herzlichen Dank!
Grilli


Den folgenden Code welcher den Debug_Vorgang dokumentiert, möchte ich meinem lieben Onkel Mücke
nicht vorenthalten...:

L_aoFld:=L_oDbf:aoFld

L_nAnzFld:=LEN(L_aoFld)

IF (L_nAnzFld>0)

L_aFeld:={}

FOR L_nFeld=1 TO L_nAnzFld

L_oFld:=L_aoFld[L_nFeld]

L_lGenFld:=L_oFld:lGenFld

IF (L_lGenFld=.T.)

L_FeldId:=L_oFld:FeldId
L_FeldTyp:=L_oFld:FeldTyp
L_nFeldLen:=L_oFld:nFeldLen
L_nFeldDec:=L_oFld:nFeldDec

/*
22.12.2015 $Meta:
*/
IF (L_FeldTyp="N") .AND. (L_nFeldDec>0)
L_nFeldLen:=L_nFeldLen+1+L_nFeldDec
ENDIF /* IF (L_FeldTyp="N") .AND. (L_nFeldDec>0) */


/*
16.5.2018 $Meta:
$Debug:
Tipp von Tom: doppelter FeldName oder (LEN(FeldName)>10)
*/
IF (LEN(L_FeldId)>10)
L_Msg:="Der FeldName vom Feld "+CHR(34)+L_FeldId+CHR(34)+" ist zu lang."
L_oMsg:WaitMsg(L_Msg)
ENDIF

FOR n=1 TO L_nAnzFld

IF (n<>L_nFeld) .AND. (UPPER(RTRIM(L_FeldId))==UPPER(RTRIM(L_aoFld[n]:FeldId)))
L_Msg:="Der FeldName vom Feld "+STR(n)+" "+L_FeldId+" ist identisch mit dem Feld "+STR(L_nFeld)
L_oMsg:WaitMsg(L_Msg)
ENDIF

NEXT n


AADD(L_aFeld,{L_FeldId,L_FeldTyp,L_nFeldLen,L_nFeldDec})

ENDIF /* IF (L_lGenFld=.T.) */

NEXT L_nFeld


IF (L_nAnzFld>0)

/*
15.6.2018 $Meta:
$Debug: Tipp von Tom: doppelter FeldName oder zu lange.

Nur ein einziges Feld "TEST": ERROR 8033.
*/
* L_aFeld:={{"TEST","C",12,0}}

DBCREATE(L_PDbfFile,L_aFeld)

ENDIF /* IF (L_nAnzFld>0) */
L_lGenDbf:=.T.

IF (L_lCryptDbf=.T.)
L_lDummy:=CryptSys(L_PDbfId,D_PW,.F.)
ENDIF

ENDIF /* IF (L_nAnzFld>0) */
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: BASE 8999

Beitrag von AUGE_OHR »

GrillenHirni hat geschrieben: Fr, 15. Jun 2018 15:54 der Name der kritischen Datei fängt sehr wohl mit einer Ziffer an: 11CEDEFK.Dbf. Damit hatte ich aber
bisher kaum Probleme...
das Problem bekommst man dann wenn ein ALIAS verwendet wird.

ist kein ALIAS angegeben dann wird der Dateiname der DBF verwenden.
wenn die DBF aber mit einer Ziffer anfängt würde es in solchen Situationen dann knallen können

wenn man selbst ein ALIAS bei USE mit einbaut kann man solche DBF Dateien aber ohne Problem nutzen.
gruss by OHR
Jimmy
Antworten