ich versuche aus dem Programm heraus mehrere Tags in einem Index zu erzeugen. Und da gibt es irgend ein Problem bei. Das ist der Code:
Code: Alles auswählen
FOR i := 1 TO Len(aIndex)
IF Len(aIndexSchluessel) >= i
oStatic := XbpStatic():new(, , {15, 45}, {670, 45}) // Static und oFortschritt hier erstellen, sonst sind die immer sichtbar, auch ohne Indexerstellung
oStatic:type := XBPSTATIC_TYPE_GROUPBOX
oStatic:caption := "Indexfortschritt"
oStatic:create()
oFortschritt := XbpProgressBar():New(oStatic, , {5, 5}, {660, 20})
oFortschritt:UseVisualStyle := .T.
oFortschritt:Create()
oFortschritt:minimum := 0
oFortschritt:maximum := Max(LastRec(), 1)
oFortschritt:setIncrement(1)
IF Len(aIndexSchluessel[i]) > 3 // FOR-Klausel
OrdCondSet(aIndexSchluessel[i][4], {|| aIndexSchluessel[i][4]}, , , , , RECNO(), , , , , , , )
ENDIF
IF MEMVAR->oSession <> NIL .OR. (MEMVAR->oSession == NIL .AND. cDbe == "FOXCDX")
OrdCreate(cDbf, ;
aIndexSchluessel[i][2], ;
aIndexSchluessel[i][1] , ;
{|| Indexfortschritt(@oFortschritt, oStatic, aIndexSchluessel[i]), &(aIndexSchluessel[i][1])}, ;
IIf(Len(aIndexSchluessel[i]) > 2, ; // Wenn es einen 3. Eintrag im Array gibt: Unique
aIndexSchluessel[i][3], ;
.F.))
ELSE
OrdCreate(cPfad + aIndexSchluessel[i][2], ;
, ;
aIndexSchluessel[i][1], ;
{|| Indexfortschritt(@oFortschritt, oStatic, aIndexSchluessel[i]), &(aIndexSchluessel[i][1])}, ;
IIf(Len(aIndexSchluessel[i]) > 2, ; // Wenn es einen 3. Eintrag im Array gibt: Unique
aIndexSchluessel[i][3], ;
.F.))
ENDIF
IF Len(aIndexSchluessel[i]) > 3 // FOR-Klausel
OrdCondSet() // FOR-Klausel wieder zurücksetzen
ENDIF
oStatic:destroy()
oStatic := NIL
ENDIF
NEXT
Code: Alles auswählen
oError:args :
oError:canDefault : .T.
oError:canRetry : .F.
oError:canSubstitute: .F.
oError:cargo : {NIL, 5089, "Error 5089: The operation is not valid for the auto-open index. Can't close an autoopen index."}
oError:description : D
oError:filename :
oError:genCode : 8999
oError:operation : DbCloseArea
oError:osCode : 0
oError:severity : 2
oError:subCode : 0
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
Ich kann also immer einen Tag erzeugen, Programm nach Fehlermeldung schließen, neu starten, nächsten Tag erzeugen. Etwas mühselig und wenig bedienfreundlich ...
Nachtrag: Der Fehler tritt genau dann auf, wenn das zweite OrdCreate() aufgerufen wird.
Jan