Positiv. Eine Data-Komponente kann mit verschiedenen Order-Komponenten zu CompoundDbes zusammengesetzt werden. Zu beachten ist nur, dass Änderungen in der DATA-Komponente sich stets auf die Compound-Dbes auswirken.
Code: Alles auswählen
#include "Common.CH"
#include "CdxDbe.CH"
#include "DbfDbe.CH"
#include "DMLB.CH"
#include "NtxDbe.CH"
#include "Set.ch"
PROCEDURE AppSys
SET DATE GERMAN
SET( _SET_COLLATION, COLLAT_GERMAN )
SET EXCLUSIVE ON
SET RUSHMORE OFF
SET SMARTFILTER OFF
SET OPTIMIZE OFF
RETURN
PROCEDURE DbeSys
// DATA-Komponente-Engine für DBF-Dateien laden
IF ! DbeLoad( "DBFDBE", FALSE )
MsgBox( "Database Engine DBFDBE nicht geladen", "DB-Fehler" )
ENDIF
// ORDER-Komponente-Engine für CDX-Dateien laden
IF ! DbeLoad( "CDXDBE", FALSE )
MsgBox( "Database Engine CDXDBE nicht geladen", "DB-Fehler" )
ENDIF
// Engines für Datensatz- und Index-Management zusammenfügen
IF ! DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
MsgBox( "Database Engine DBFCDX nicht erzeugt", "DB-Fehler" )
ENDIF
// ORDER-Komponente-Engine für NTX-Dateien laden
IF ! DbeLoad( "NTXDBE", FALSE )
MsgBox( "Database Engine NTXDBE nicht geladen", "DB-Fehler" )
ENDIF
// Engines für Datensatz- und Index-Management zusammenfügen
IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
MsgBox( "Database Engine DBFCDX nicht erzeugt", "DB-Fehler" )
ENDIF
RETURN
PROCEDURE Main
SET PRINTER TO DbeInfo.Txt
SET PRINTER ON
? PadR( "DBES", 22 ), DbeList()
? PadR( "Collation", 22 ), SetCollation()
?
DbeSetDefault("DBFCDX")
? "Compound-Dbe DBFCDX abfragen"
? 'DbeSetDefault("DBFCDX")'
?
? PadR( "DBFDBE_MEMOFILE_EXT", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_MEMOFILE_EXT )
? PadR( "DBFDBE_MEMOBLOCKSIZE", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_MEMOBLOCKSIZE )
? PadR( "DBFDBE_LOCKMODE", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKMODE )
? PadR( "DBFDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
? PadR( "DBFDBE_LOCKRETRY", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKRETRY )
? PadR( "DBFDBE_LOCKDELAY", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKDELAY )
? PadR( "DBFDBE_LOCKRETRY_MIN", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKRETRY_MIN )
? PadR( "DBFDBE_LOCKDELAY_MIN", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKDELAY_MIN )
? PadR( "DBFDBE_CACHESIZE", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_CACHESIZE )
? PadR( "DBFDBE_LIFETIME", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LIFETIME )
? PadR( "DBFDBE_ANSI", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_ANSI )
?
? PadR( "CDXDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_ORDER, CDXDBE_LOCKOFFSET )
? PadR( "CDXDBE_LOCKRETRY", 22 ), DbeInfo( COMPONENT_ORDER, CDXDBE_LOCKRETRY )
? PadR( "CDXDBE_LOCKDELAY", 22 ), DbeInfo( COMPONENT_ORDER, CDXDBE_LOCKDELAY )
? PadR( "CDXDBE_LIFETIME", 22 ), DbeInfo( COMPONENT_ORDER, CDXDBE_LIFETIME )
? PadR( "CDXDBE_LOCKRETRY_MIN", 22 ), DbeInfo( COMPONENT_ORDER, CDXDBE_LOCKRETRY_MIN )
? PadR( "CDXDBE_LOCKDELAY_MIN", 22 ), DbeInfo( COMPONENT_ORDER, CDXDBE_LOCKDELAY_MIN )
? PadR( "CDXDBE_MODE", 22 ), DbeInfo( COMPONENT_ORDER, CDXDBE_MODE )
?
DbeSetDefault("DBFNTX")
? "Compound-Dbe DBFNTX abfragen"
? 'DbeSetDefault("DBFNTX")'
?
? PadR( "DBFDBE_MEMOFILE_EXT", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_MEMOFILE_EXT )
? PadR( "DBFDBE_MEMOBLOCKSIZE", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_MEMOBLOCKSIZE )
? PadR( "DBFDBE_LOCKMODE", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKMODE )
? PadR( "DBFDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
? PadR( "DBFDBE_LOCKDELAY", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKDELAY )
? PadR( "DBFDBE_LOCKRETRY", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKRETRY )
? PadR( "DBFDBE_CACHESIZE", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_CACHESIZE )
? PadR( "DBFDBE_LIFETIME", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LIFETIME )
? PadR( "DBFDBE_LOCKDELAY_MIN", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKDELAY_MIN )
? PadR( "DBFDBE_LOCKRETRY_MIN", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKRETRY_MIN )
? PadR( "DBFDBE_ANSI", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_ANSI )
?
? PadR( "NTXDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKOFFSET )
? PadR( "NTXDBE_LOCKRETRY", 22 ), DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKRETRY )
? PadR( "NTXDBE_LOCKDELAY", 22 ), DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKDELAY )
? PadR( "NTXDBE_LOCKRETRY_MIN", 22 ), DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKRETRY_MIN )
? PadR( "NTXDBE_LOCKDELAY_MIN", 22 ), DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKDELAY_MIN )
? PadR( "NTXDBE_SIGN", 22 ), DbeInfo( COMPONENT_ORDER, NTXDBE_SIGN )
DbeSetDefault("DBFDBE")
?
? "In der DBFDBE, COMPONENT_DATA, DBFDBE_LOCKOFFSET auf 0x80000000 setzen und abfragen"
? 'DbeSetDefault("DBFDBE")'
DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET, 0x80000000 )
? PadR( "DBFDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
DbeSetDefault("DBFCDX")
?
? "In der DBFCDX, COMPONENT_DATA, DBFDBE_LOCKOFFSET abfragen"
? 'DbeSetDefault("DBFCDX")'
? PadR( "CDXDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
DbeSetDefault("DBFNTX")
?
? "In der DBFNTX, COMPONENT_DATA, DBFDBE_LOCKOFFSET abfragen"
? 'DbeSetDefault("DBFNTX")'
? PadR( "NTXDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
DbeSetDefault("DBFNTX")
?
? "NUR in der DBFNTX, COMPONENT_DATA, DBFDBE_LOCKOFFSET auf 10^2 setzen und abfragen"
? 'DbeSetDefault("DBFNTX")'
DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET, 10^9 )
? PadR( "DBFDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
DbeSetDefault("DBFCDX")
?
? "In der DBFCDX, COMPONENT_DATA, DBFDBE_LOCKOFFSET abfragen"
? 'DbeSetDefault("DBFCDX")'
? PadR( "CDXDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
DbeSetDefault("DBFNTX")
?
? "In der DBFNTX, COMPONENT_DATA, DBFDBE_LOCKOFFSET abfragen"
? 'DbeSetDefault("DBFNTX")'
? PadR( "NTXDBE_LOCKOFFSET", 22 ), DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET )
SET PRINTER OFF
SET PRINTER TO
RETURN
Bedauerlich, dass man kein Alias ähnliches Konstrukt verwenden kann.