USE / DbUseArea() : VIA [erledigt]
Verfasst: Do, 06. Okt 2016 11:05
moin,
ich habe ein Problem mit dem VIA in DbUseArea() gemäss der Beschreibung von Alaska ...
in einer externe DBESYS hätte ich diese DbeBuild(), oderdie Befehle müssten dann so sein, oder
nun habe ich diesen funktionsfähigen Code
daraus ergibt sich diese PPO
Frage : USE / DbUseArea()
wird der DBE "Name" angegeben ...aber damit erhalte ich
aber wenn das Beispiel nicht funktioniert ist auch die Beschreibung von Alaska falsch (!), oder
p.s. natürlich habe c:\ALASKA\XPPW32\SOURCE\samples\basics\GuiBrow\DBBROWSE.prg erweitert um DBESYS.
ich habe ein Problem mit dem VIA in DbUseArea() gemäss der Beschreibung von Alaska ...
wenn ich keine externe DBESYS verwende sagt DbeSetDefault() -> "DBFNTX", oderDbUseArea( [<lNewArea>] , ;
[<cDBE>|<oSession>] , ;
<cFileName> , ;
[<cAlias>] , ;
[<lShared>] , ;
[<lReadonly>] ) --> NIL
<cDBE>
Mit <cDBE> kann optional die Database-Engine (DBE) bestimmt werden, die die Dateien in der gewünschten Workarea verwalten soll. Es ist eine Zeichenkette, die den Namen der DBE enthält. Falls <cDBE> nicht angegeben ist, wird die DBE verwendet, die durch DbeSetDefault() als Standard-DBE definiert worden ist.
in einer externe DBESYS hätte ich diese DbeBuild(), oder
Code: Alles auswählen
IF !DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
IF !DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
Code: Alles auswählen
DbeSetDefault("DBFNTX")
DbeSetDefault("FOXCDX")
Code: Alles auswählen
IF cDBE = "FOXDBE"
USE &(cDbf) SHARED VIA "FOXCDX"
ELSE
USE &(cDbf) SHARED VIA "DBFNTX"
ENDIF
SET INDEX TO &(cCDX)
Code: Alles auswählen
IF cDBE = "FOXDBE"
dbUseArea( .F., "FOXCDX", (cDbf), , iif(.T. .or. .F., !.F., NIL), .F.)
ELSE
dbUseArea( .F., "DBFNTX", (cDbf), , iif(.T. .or. .F., !.F., NIL), .F.)
ENDIF
ordListClear() ;ordListAdd( (cCDX) )
wie auch im Beispiel c:\ALASKA\XPPW32\SOURCE\samples\basics\GuiBrow\DBBROWSE.prgUSE [ <cFileName> ;
...
[ VIA <cDbeName> | (<oSession>) ] ;
DbUseArea( [<lNewArea>] , ;
...
[<cDBE>|<oSession>] , ;
wird der DBE "Name" angegeben ...
Code: Alles auswählen
bError := ErrorBlock( {|oErr| Break( oErr ) } )
cDBE := "DBFDBE" // falsch ? müsste DBFNTX sein ?
FOR i:=1 TO 2
BEGIN SEQUENCE
DbUseArea( .T., cDBE, name )
RECOVER
IF i== 1
cDBE := "FOXDBE" // falsch ? müsste FOXCDX sein ?
LOOP
ENDIF
ENDSEQUENCE
EXIT
NEXT
ErrorBlock( bError )
IF cDBE = "FOXDBE"
SET INDEX TO &(cCDX) // <- hier knallt er
ENDIF
mir ist das bislang nicht aufgefallen weil ich USE statt DbUseArea() wie das Alaska Beispiel verwende.oError:args :
-> VALTYPE: C VALUE: d:\ALASKA\WMP\WM9MARK.CDX
oError:canDefault : N
oError:canRetry : J
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Operation wird durch DBE nicht unterstützt
oError:filename :
oError:genCode : 58
oError:operation : OrdListAdd
oError:osCode : 0
oError:severity : 2
oError:subCode : 8015
oError:subSystem : BASE
oError:thread : 1
oError:tries : 2
aber wenn das Beispiel nicht funktioniert ist auch die Beschreibung von Alaska falsch (!), oder
p.s. natürlich habe c:\ALASKA\XPPW32\SOURCE\samples\basics\GuiBrow\DBBROWSE.prg erweitert um DBESYS.