Eugene, look for my _LoadDbes(), default system DbeSys() was not loaded, and instead of this loaded _LoadDbes(),
Code: Select all
************************************************************************
* TESTOVACIA UTILITKA
************************************************************************
#include "dcdialog.ch"
#include "foxdbe.ch"
#include "cdxdbe.ch"
#include "dbfdbe.ch"
#include "dcmsg.ch"
#include "NLS.ch"
#include "Appevent.ch"
#define VK_END xbeK_END
#IFDEF __XPP__
#ELSE
REQUEST HB_GT_WIN_DEFAULT // harbour Console
#ENDIF
*****************
Procedure Main()
*****************
Local cCakajtlv
aStructure := { { "Image_name", "C", 250, 0 },;
{ "Short_name", "C", 250, 0 },;
{ "Xcentr" , "N", 19, 7 },;
{ "Ycentr" , "N", 19, 7 },;
{ "Array" , "M", 10, 0 } }
DbCreate( "Image.dbf", aStructure, "FOXCDX" )
return nil
****************************
PROCEDURE DbeSys()
****************************
_LoadDbes()
RETURN
****************************************
STATIC FUNCTION _LoadDbes()
****************************************
LOCAL i, aDbeList := DbeList(), cDbeList := ''
*qqq 4.5.2016 znova pokusym dopĺňam a testujem toto, ale nemá to vplyv na triedenie VL
* !!! POZOR !!! , ak je SET COLLATION TO SYSTEM tak to ma veľky vplyv na porovnavanie reťazcov v celom programe !!!
* vtedy je porovnavanie =<>... case insensitive
* preto musím použiť SET COLLATION TO GERMAN, alebo iný
*SET COLLATION TO SYSTEM // NEDÁVAŤ !!!
SET COLLATION TO GERMAN // v CDX sa objaví text GERMAN // TOTO SKÚŠAM kvôli RLC5D kódovaniu a porovnávaniu reťazcov
// lebo ak je SYSTEM,tak je porovnanie case insensitive
DbSetNullValue(.F.)
*SET COLLATION TO ASCII // v CDX sa neobjaví žiadny text, teda ani SWEFIN
*SET COLLATION TO AMERICAN
* ak nedám nič // v CDX sa objaví GENERAL
*qqq 4.5.2016 aj toto dávam podĺa PRAHA, ale nemá vplyv na triedenie
*qqq 13.10.2016 skúšam aktívne podľa rady Bielik test indexov ale asi to nemá vplyv na nič
*Set Optimize Off
*Set Rushmore Off
*Set SmartFilter Off
IF Valtype(aDbeList) = 'A'
FOR i := 1 TO Len(aDbeList)
cDbeList += aDbeList[i,1] + ','
NEXT
ENDIF
aDbeList := cDbeList
IF !('DBFDBE'$aDbeList) .AND. !DbeLoad( "DBFDBE",.T.)
DC_WinAlert( "Database-Engine DBFDBE not loaded" )
ENDIF
IF !('NTXDBE'$aDbeList) .AND. !DbeLoad( "NTXDBE",.T.)
DC_WinAlert( "Database-Engine NTXDBE not loaded" )
ENDIF
IF !('DBFNTX'$aDbeList) .AND. !DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
DC_WinAlert( "DBFNTX Database-Engine, Could not build engine" )
ENDIF
IF !('CDXDBE'$aDbeList) .AND. !DbeLoad( "CDXDBE",.T.)
DC_WinAlert( "Database-Engine CDXDBE not loaded" )
ENDIF
IF !('DBFCDX'$aDbeList) .AND. !DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
DC_WinAlert( "DBFCDX Database-Engine, Could not build engine" )
ENDIF
IF !('FOXDBE'$aDbeList) .AND. !DbeLoad( "FOXDBE",.T.)
DC_WinAlert( "Database-Engine FOXDBE not loaded" )
ENDIF
IF !('FOXCDX'$aDbeList) .AND. !DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
DC_WinAlert( "FOXCDX Database-Engine, Could not build engine" )
ENDIF
IF !('DELDBE'$aDbeList) .AND. !DbeLoad( "DELDBE",.T.)
DC_WinAlert( "Database-Engine DELDBE not loaded" )
ENDIF
DbeSetDefault( "FOXCDX" ) // toto bolo
*DbeSetDefault( "DBFCDX" ) // toto iba som skúšal, ale bez rozdielu
*qqq 4.5.2016 toto skúšam preddefinovať už tu, hoci všetko preindexujem, ale nemá vplyv
* ale všetko blokujem, lebo som nezistil žeby to malo na dačo vplyv
* toto mám z cdxdbe.ch
* skúsim toto
*DbeInfo(COMPONENT_ORDER,CDXDBE_MODE,CDXDBE_VFOXPRO)
*DbeInfo(COMPONENT_ORDER,CDXDBE_MODE,CDXDBE_FOXPRO2X) // toto zhavaruje, lebo index je VFP
*DBEINFO(COMPONENT_DATA,FOXDBE_CREATE_2X,TRUE)
* toto mám z foxdbe.ch
*DBEINFO(COMPONENT_DATA,FOXDBE_LOCKMODE,FOXDBE_LOCKMODE_AUTO)
*DBEINFO(COMPONENT_DATA,FOXDBE_LOCKMODE,FOXDBE_LOCKMODE_2X)
*DBEINFO(COMPONENT_DATA,FOXDBE_LOCKMODE,FOXDBE_LOCKMODE_VISUAL)
*DBEINFO(COMPONENT_DATA,FOXDBE_LOCKMODE,FOXDBE_CLIPPER)
* neviem načo to je, blokujem, je to z fora niektorý príspevok
*DBEINFO( COMPONENT_DATA, FOXDBE_LOCKRETRY, 100000 )
*DBEINFO( COMPONENT_ORDER, CDXDBE_LOCKRETRY, 100000 )
*qqq 13.10.2016 doplnené podľa rady Bielik
* skúsim zmeniť z 20 na 0
*DbeInfo(COMPONENT_DATA, FOXDBE_LIFETIME, 0 ) && bielik
DbeInfo(COMPONENT_DATA, FOXDBE_LIFETIME, 20 ) && bielik
*qqq implementácia funkcie od Janka, táto iba naplní collation tabuľku a predvolí COLLAT_USER
* ale problém kompatibility z SLOVAK CDX z WISKN pretrváva
*Ritrajv()
*SetColl()
*SetSystemCollation() // toto skúšam, z internetu zdroj ale je to len asi iná verzia ako upraviť collation
RETURN .t.