2010-06-26 13:14 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

+ contrib/makefile.prg
    + Added new control script which is meant to orchestrate
      building contribs, both libs and utils, with clean/install
      support and option for extra lib/bin addons. It's also
      possible to build dynamic version of the libs.

  * examples/rddado/adordd.prg
    * Cleanups.

  * examples/rddado/rddado.hbp
    + Added -w3 option.

  * contrib/gtalleg/gtallegs/Makefile
  * contrib/gtalleg/gtallegs.hbp
    ! Disabled static build for everything except msvc and pocc.

  * contrib/gtalleg/gtallegs.hbc
    ! Added libdir for static lib.

  + contrib/gtalleg/tests/test.prg
    + Added simple test app.
This commit is contained in:
Viktor Szakats
2010-06-26 11:18:02 +00:00
parent aacd4f0ecb
commit 47323d29c2
8 changed files with 540 additions and 210 deletions

View File

@@ -16,6 +16,29 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-06-26 13:14 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
+ contrib/makefile.prg
+ Added new control script which is meant to orchestrate
building contribs, both libs and utils, with clean/install
support and option for extra lib/bin addons. It's also
possible to build dynamic version of the libs.
* examples/rddado/adordd.prg
* Cleanups.
* examples/rddado/rddado.hbp
+ Added -w3 option.
* contrib/gtalleg/gtallegs/Makefile
* contrib/gtalleg/gtallegs.hbp
! Disabled static build for everything except msvc and pocc.
* contrib/gtalleg/gtallegs.hbc
! Added libdir for static lib.
+ contrib/gtalleg/tests/test.prg
+ Added simple test app.
2010-06-26 10:28 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/rtl/gtwvt/gtwvt.c
+ SETMODE() will now support automatic resizing of font to make

View File

@@ -4,5 +4,6 @@
libs=${hb_name}
{win}libpaths=${HB_WITH_ALLEGRO}/../lib
{win}libs=alleg_s d3d9 dsound
{linux}ldflags="`allegro-config --static 2>/dev/null`"

View File

@@ -4,6 +4,8 @@
gtalleg.hbp
-stop{!msvc&!pocc}
-o${hb_name}
-workdir=${hb_work}/${hb_plat}/${hb_comp}/${hb_name}

View File

@@ -18,7 +18,7 @@ _DET_DSP_NAME := allegro
_DET_VAR_INC_ := HB_INC_ALLEGRO
_DET_VAR_HAS_ := HB_HAS_ALLEGRO
_DET_FLT_PLAT :=
_DET_FLT_COMP := !pocc !pocc64 !poccarm !xcc !dmc !watcom !mingwarm
_DET_FLT_COMP := msvc pocc
_DET_INC_DEFP := /usr/include /opt/local/include
_DET_INC_HEAD := /allegro.h
include $(TOP)$(ROOT)config/detfun.mk

View File

@@ -0,0 +1,13 @@
/*
* $Id$
*/
REQUEST HB_GT_ALLEG_DEFAULT
ANNOUNCE HB_GTSYS
PROCEDURE Main()
CLS
ALERT( "Hello world!" )
RETURN

View File

@@ -0,0 +1,285 @@
/*
* $Id$
*/
/*
* Copyright 2009 Viktor Szakats (harbour.01 syenar.hu)
* See COPYING for licensing terms.
*/
/* TODO:
1. error handling / reporting / feedback
2. copy headers and other stuff (hbide)
3. add .dll generation for contrib libs
4. first do all the 'clean's
*/
#pragma warninglevel=3
/* TOFIX: Ugly hack to avoid #include "directry.ch" */
#define F_NAME 1 /* File name */
#define F_ATTR 5 /* File attribute */
#define _PS_ hb_osPathSeparator()
STATIC s_lTest
PROCEDURE Main( ... )
LOCAL cBase := "contrib/"
LOCAL aLibs := {;
"gtwvg/gtwvg.hbp" ,;
"hbblink/hbblink.hbp" ,;
"hbbz2/hbbz2.hbp" ,;
"hbclipsm/hbclipsm.hbp" ,;
"hbcomm/hbcomm.hbp" ,;
"hbct/hbct.hbp" ,;
"hbfoxpro/hbfoxpro.hbp" ,;
"hbfship/hbfship.hbp" ,;
"hbgt/hbgt.hbp" ,;
"hbmemio/hbmemio.hbp" ,;
"hbmisc/hbmisc.hbp" ,;
"hbmzip/hbmzip.hbp" ,;
"hbnetio/hbnetio.hbp" ,;
"hbnf/hbnf.hbp" ,;
"hbodbc/hbodbc.hbp" ,;
"hbsms/hbsms.hbp" ,;
"hbsqlit3/hbsqlit3.hbp" ,;
"hbtip/hbtip.hbp" ,;
"hbtip/hbtipssl.hbp" ,;
"hbtpathy/hbtpathy.hbp" ,;
"hbwin/hbwin.hbp" ,;
"hbxpp/hbxpp.hbp" ,;
"hbziparc/hbziparc.hbp" ,;
"rddbmcdx/hbbmcdx.hbp" ,;
"xhb/xhb.hbp" }
LOCAL aLibDeps := {;
"gtalleg/gtalleg.hbp" ,;
"gtalleg/gtallegs.hbp" ,;
"hbblat/hbblat.hbp" ,;
"hbcairo/hbcairo.hbp" ,;
"hbcups/hbcups.hbp" ,;
"hbcurl/hbcurl.hbp" ,;
"hbcurl/hbcurls.hbp" ,;
"hbfbird/hbfbird.hbp" ,;
"hbfimage/hbfimage.hbp" ,;
"hbgd/hbgd.hbp" ,;
"hbhpdf/hbhpdf.hbp" ,;
"hbmysql/hbmysql.hbp" ,;
"hbpgsql/hbpgsql.hbp" ,;
"hbqt/hbqt.hbp" ,;
"hbqt/hbqtcore.hbp" ,;
"hbqt/hbqtcores.hbp" ,;
"hbqt/hbqtgui.hbp" ,;
"hbqt/hbqtguis.hbp" ,;
"hbqt/hbqtnetwork.hbp" ,;
"hbqt/hbqtnetworks.hbp" ,;
"hbqt/hbqts.hbp" ,;
"hbssl/hbssl.hbp" ,;
"hbssl/hbssls.hbp" ,;
"hbxbp/hbxbp.hbp" ,;
"rddads/rddads.hbp" ,;
"rddsql/rddsql.hbp" ,;
"sddfb/sddfb.hbp" ,;
"sddmy/sddmy.hbp" ,;
"sddoci/sddoci.hbp" ,;
"sddodbc/sddodbc.hbp" ,;
"sddpg/sddpg.hbp" ,;
"sddsqlt3/sddsqlt3.hbp" }
LOCAL aImpLibs := {;
"gtalleg/gtalleg.hbi" ,;
"hbblat/hbblat.hbi" ,;
"hbcairo/hbcairo.hbi" ,;
"hbcurl/hbcurl.hbi" ,;
"hbfbird/hbfbird.hbi" ,;
"hbfimage/hbfimage.hbi" ,;
"hbgd/hbgd.hbi" ,;
"hbhpdf/hbhpdf.hbi" ,;
"hbmysql/hbmysql.hbi" ,;
"hbpgsql/hbpgsql.hbi" ,;
"hbssl/hbssl.hbi" ,;
"rddads/rddads.hbi" ,;
"sddfb/sddfb.hbi" ,;
"sddmy/sddmy.hbi" ,;
"sddoci/sddoci.hbi" ,;
"sddpg/sddpg.hbi" }
LOCAL aUtils := {;
"hbnetio/utils/netiosrv.hbp" ,;
"hbqt/utils/hbqtui.hbp" ,;
"hbide/hbide.hbp" }
LOCAL aAll := {;
aImpLibs ,;
aLibs ,;
aLibDeps ,;
aUtils,;
hb_ATokens( GetEnv( "HB_ADDONS_LIB" ),, .T. ),;
hb_ATokens( GetEnv( "HB_ADDONS_BIN" ),, .T. ) }
LOCAL aAllType := {;
"implib" ,;
"lib" ,;
"lib" ,;
"bin" ,;
"lib" ,;
"bin" }
LOCAL chunk
LOCAL cProject
LOCAL cProjectDir
LOCAL cType
LOCAL cInstallDirVar
LOCAL cTargetDir
LOCAL cOptions := ""
LOCAL cFilter := GetEnv( "HB_CONTRIBLIBS" )
LOCAL aFilter
LOCAL lFilterNegative
LOCAL aParams := hb_AParams()
LOCAL tmp
IF Empty( GetEnv( "HB_PLATFORM" ) ) .OR. ;
Empty( GetEnv( "HB_COMPILER" ) ) .OR. ;
Empty( GetEnv( "HB_HOST_BIN_DIR" ) )
ErrorLevel( 9 )
RETURN
ENDIF
IF cFilter == "no"
ErrorLevel( 0 )
RETURN
ENDIF
/* Converting build options to hbmk2 options */
IF GetEnv( "HB_BUILD_MODE" ) == "cpp"
cOptions += " -cpp=yes"
ELSEIF GetEnv( "HB_BUILD_MODE" ) == "c"
cOptions += " -cpp=no"
ENDIF
IF GetEnv( "HB_BUILD_DEBUG" ) == "yes"
cOptions += " -debug"
ENDIF
FOR EACH tmp IN aParams
tmp := Lower( tmp )
NEXT
s_lTest := AScan( aParams, "test" ) > 0
/* Parse filter */
aFilter := iif( Empty( cFilter ), {}, hb_ATokens( cFilter,, .T. ) )
IF Len( aFilter ) >= 1 .AND. aFilter[ 1 ] == "no"
hb_ADel( aFilter, 1, .T. )
lFilterNegative := .T.
ELSE
lFilterNegative := .F.
ENDIF
/* Start building */
FOR EACH chunk, cType IN aAll, aAllType
FOR EACH cProject IN chunk
IF ! Empty( cProject )
cProject := StrTran( cProject, "\", "/" )
IF ( tmp := At( "/", cProject ) ) > 0
cProjectDir := Left( cProject, tmp - 1 )
ELSE
cProjectDir := ""
ENDIF
IF Empty( aFilter ) .OR. ;
iif( lFilterNegative,;
AScan( aFilter, {| tmp | tmp == cProjectDir } ) == 0,;
AScan( aFilter, {| tmp | tmp == cProjectDir } ) > 0 )
SWITCH cType
CASE "lib"
CASE "implib"
cTargetDir := "lib/" + GetEnv( "HB_PLATFORM" ) + "/" + GetEnv( "HB_COMPILER" ) + iif( Empty( GetEnv( "HB_BUILD_NAME" ) ), "", "/" + GetEnv( "HB_BUILD_NAME" ) )
cInstallDirVar := "HB_LIB_INSTALL_"
EXIT
CASE "bin"
cTargetDir := "bin/" + GetEnv( "HB_PLATFORM" ) + "/" + GetEnv( "HB_COMPILER" ) + iif( Empty( GetEnv( "HB_BUILD_NAME" ) ), "", "/" + GetEnv( "HB_BUILD_NAME" ) )
cInstallDirVar := "HB_BIN_INSTALL_"
EXIT
ENDSWITCH
IF AScan( aParams, "clean" ) > 0
call_hbmk2( cBase + cProject, cTargetDir, cOptions + " -clean", .F. )
ENDIF
IF AScan( aParams, "install" ) > 0 .AND. ;
! Empty( GetEnv( cInstallDirVar ) ) .AND. ;
( ! ( cType == "implib" ) .OR. GetEnv( "HB_BUILD_IMPLIB" ) == "yes" )
call_hbmk2( cBase + cProject, cTargetDir, cOptions + " -instpath=${" + cInstallDirVar + "}", .F. )
ELSE
call_hbmk2( cBase + cProject, cTargetDir, cOptions + " -inc", .F. )
ENDIF
IF cType == "lib" .AND. GetEnv( "HB_BUILD_CONTRIB_DLL" ) == "yes"
IF AScan( aParams, "clean" ) > 0
call_hbmk2( cBase + cProject, cTargetDir, cOptions + " -clean", .T. )
ENDIF
IF AScan( aParams, "install" ) > 0 .AND. ;
! Empty( GetEnv( cInstallDirVar ) ) .AND. ;
( ! ( cType == "implib" ) .OR. GetEnv( "HB_BUILD_IMPLIB" ) == "yes" )
call_hbmk2( cBase + cProject, cTargetDir, cOptions + " -instpath=${" + cInstallDirVar + "}", .T. )
ELSE
call_hbmk2( cBase + cProject, cTargetDir, cOptions + " -inc", .T. )
ENDIF
ENDIF
ELSE
/* OutStd( hb_StrFormat( "'%s' project skipped" + hb_osNewLine(), cProject ) ) */
ENDIF
ENDIF
NEXT
NEXT
ErrorLevel( 0 )
RETURN
STATIC FUNCTION call_hbmk2( cProject, cTargetDir, cOptions, lDyn )
LOCAL nErrorLevel
LOCAL cDir, cName
hb_FNameSplit( cProject, @cDir, @cName )
/* TOFIX: Add -implib option. It collides with static lib so needs to be resolved. */
nErrorLevel := mk_hb_processRun( GetEnv( "HB_HOST_BIN_DIR" ) + _PS_ + "hbmk2" +;
" -quiet -lang=en -q0" + cOptions +;
" " + cProject +;
iif( lDyn, " -hbdyn -nohblib- " + FN_ExtSet( cProject, ".hbc" ), "" ) +;
" -workdir=" + cTargetDir + "/${hb_work}/" + cName + iif( lDyn, "_dyn", "" ) +;
" -o" + cTargetDir + "/" )
IF nErrorLevel != 0
OutStd( hb_StrFormat( "'%s' returned status: %s" + hb_osNewLine(), cProject, hb_ntos( nErrorLevel ) ) )
RETURN .F.
ENDIF
RETURN .T.
STATIC FUNCTION mk_hb_processRun( cCommand )
OutStd( cCommand + hb_osNewLine() )
RETURN iif( s_lTest, 0, hb_processRun( cCommand ) )
STATIC FUNCTION FN_ExtSet( cFileName, cExt )
LOCAL cDir, cName
hb_FNameSplit( cFileName, @cDir, @cName )
RETURN hb_FNameMerge( cDir, cName, cExt )

View File

@@ -150,37 +150,37 @@ STATIC FUNCTION ADO_CREATE( nWA, aOpenInfo )
LOCAL oError, n
DO CASE
CASE Lower( Right( cDataBase, 4 ) ) == ".mdb"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase )
ENDIF
oConnection:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase )
CASE Lower( Right( cDataBase, 4 ) ) == ".mdb"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase )
ENDIF
oConnection:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase )
CASE Lower( Right( cDataBase, 4 ) ) == ".xls"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Excel 8.0;HDR=YES';Persist Security Info=False" )
ENDIF
oConnection:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Excel 8.0;HDR=YES';Persist Security Info=False")
CASE Lower( Right( cDataBase, 4 ) ) == ".xls"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Excel 8.0;HDR=YES';Persist Security Info=False" )
ENDIF
oConnection:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Excel 8.0;HDR=YES';Persist Security Info=False")
CASE Lower( Right( cDataBase, 3 ) ) == ".db"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Paradox 3.x';" )
ENDIF
oConnection:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Paradox 3.x';" )
CASE Lower( Right( cDataBase, 3 ) ) == ".db"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Paradox 3.x';" )
ENDIF
oConnection:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + cDataBase + ";Extended Properties='Paradox 3.x';" )
CASE Lower( Right( cDataBase, 4 ) ) == ".fdb"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Driver=Firebird/InterBase(r) driver;Uid=" + cUserName + ";Pwd=" + cPassword + ";DbName=" + cDataBase + ";" )
ENDIF
oConnection:Open( "Driver=Firebird/InterBase(r) driver;Uid=" + cUserName + ";Pwd=" + cPassword + ";DbName=" + cDataBase + ";" )
oConnection:CursorLocation := adUseClient
CASE Lower( Right( cDataBase, 4 ) ) == ".fdb"
IF ! hb_FileExists( cDataBase )
oCatalog:Create( "Driver=Firebird/InterBase(r) driver;Uid=" + cUserName + ";Pwd=" + cPassword + ";DbName=" + cDataBase + ";" )
ENDIF
oConnection:Open( "Driver=Firebird/InterBase(r) driver;Uid=" + cUserName + ";Pwd=" + cPassword + ";DbName=" + cDataBase + ";" )
oConnection:CursorLocation := adUseClient
CASE Upper( cDbEngine ) == "MYSQL"
oConnection:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + cServer + ;
";database=" + cDataBase + ;
";uid=" + cUserName + ;
";pwd=" + cPassword )
CASE Upper( cDbEngine ) == "MYSQL"
oConnection:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + cServer + ;
";database=" + cDataBase + ;
";uid=" + cUserName + ;
";pwd=" + cPassword )
ENDCASE
@@ -209,7 +209,7 @@ STATIC FUNCTION ADO_CREATE( nWA, aOpenInfo )
NEXT
UR_SUPER_ERROR( nWA, oError )
END
END SEQUENCE
oConnection:Close()
@@ -223,45 +223,45 @@ STATIC FUNCTION ADO_CREATEFIELDS( nWA, aStruct )
aWAData[ WA_SQLSTRUCT ] := ""
FOR n := 1 to Len( aStruct )
IF n > 1
aWAData[ WA_SQLSTRUCT ] += ", "
ENDIF
aWAData[ WA_SQLSTRUCT ] += "[" + aStruct[ n ][ DBS_NAME ] + "]"
DO CASE
CASE aStruct[ n ][ DBS_TYPE ] $ "C,Character"
aWAData[ WA_SQLSTRUCT ] += " CHAR(" + AllTrim( Str( aStruct[ n ][ DBS_LEN ] ) ) + ") NULL"
IF n > 1
aWAData[ WA_SQLSTRUCT ] += ", "
ENDIF
aWAData[ WA_SQLSTRUCT ] += "[" + aStruct[ n ][ DBS_NAME ] + "]"
DO CASE
CASE aStruct[ n ][ DBS_TYPE ] $ "C,Character"
aWAData[ WA_SQLSTRUCT ] += " CHAR(" + hb_ntos( aStruct[ n ][ DBS_LEN ] ) + ") NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "V"
aWAData[ WA_SQLSTRUCT ] += " VARCHAR(" + AllTrim( Str( aStruct[ n ][ DBS_LEN ] ) ) + ") NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "V"
aWAData[ WA_SQLSTRUCT ] += " VARCHAR(" + hb_ntos( aStruct[ n ][ DBS_LEN ] ) + ") NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "B"
aWAData[ WA_SQLSTRUCT ] += " DOUBLE NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "B"
aWAData[ WA_SQLSTRUCT ] += " DOUBLE NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "Y"
aWAData[ WA_SQLSTRUCT ] += " SMALLINT NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "Y"
aWAData[ WA_SQLSTRUCT ] += " SMALLINT NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "I"
aWAData[ WA_SQLSTRUCT ] += " MEDIUMINT NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "I"
aWAData[ WA_SQLSTRUCT ] += " MEDIUMINT NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "D"
aWAData[ WA_SQLSTRUCT ] += " DATE NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "D"
aWAData[ WA_SQLSTRUCT ] += " DATE NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "T"
aWAData[ WA_SQLSTRUCT ] += " DATETIME NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "T"
aWAData[ WA_SQLSTRUCT ] += " DATETIME NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "@"
aWAData[ WA_SQLSTRUCT ] += " TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP"
CASE aStruct[ n ][ DBS_TYPE ] == "@"
aWAData[ WA_SQLSTRUCT ] += " TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP"
CASE aStruct[ n ][ DBS_TYPE ] == "M"
aWAData[ WA_SQLSTRUCT ] += " TEXT NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "M"
aWAData[ WA_SQLSTRUCT ] += " TEXT NULL"
CASE aStruct[ n ][ DBS_TYPE ] == "N"
aWAData[ WA_SQLSTRUCT ] += " NUMERIC(" + AllTrim( Str( aStruct[ n ][ DBS_LEN ] ) ) + ")"
CASE aStruct[ n ][ DBS_TYPE ] == "N"
aWAData[ WA_SQLSTRUCT ] += " NUMERIC(" + hb_ntos( aStruct[ n ][ DBS_LEN ] ) + ")"
CASE aStruct[ n ][ DBS_TYPE ] == "L"
aWAData[ WA_SQLSTRUCT ] += " LOGICAL"
ENDCASE
NEXT
CASE aStruct[ n ][ DBS_TYPE ] == "L"
aWAData[ WA_SQLSTRUCT ] += " LOGICAL"
ENDCASE
NEXT
RETURN HB_SUCCESS
@@ -271,7 +271,7 @@ STATIC FUNCTION ADO_OPEN( nWA, aOpenInfo )
LOCAL cName, aField, oError, nResult
LOCAL oRecordSet, nTotalFields, n
// When there is no ALIAS we will create new one using file name
/* When there is no ALIAS we will create new one using file name */
IF Empty( aOpenInfo[ UR_OI_ALIAS ] )
HB_FNAMESPLIT( aOpenInfo[ UR_OI_NAME ], , @cName )
aOpenInfo[ UR_OI_ALIAS ] := cName
@@ -289,54 +289,55 @@ STATIC FUNCTION ADO_OPEN( nWA, aOpenInfo )
DO CASE
CASE Lower( Right( aOpenInfo[ UR_OI_NAME ], 4 ) ) == ".mdb"
IF Empty( aWAData[ WA_PASSWORD ] )
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] )
ELSE
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Jet OLEDB:Database Password=" + AllTrim( aWAData[ WA_PASSWORD ] ) )
ENDIF
IF Empty( aWAData[ WA_PASSWORD ] )
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] )
ELSE
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Jet OLEDB:Database Password=" + AllTrim( aWAData[ WA_PASSWORD ] ) )
ENDIF
CASE Lower( Right( aOpenInfo[ UR_OI_NAME ], 4 ) ) == ".xls"
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Extended Properties='Excel 8.0;HDR=YES';Persist Security Info=False" )
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Extended Properties='Excel 8.0;HDR=YES';Persist Security Info=False" )
CASE Lower( Right( aOpenInfo[ UR_OI_NAME ], 4 ) ) == ".dbf"
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Extended Properties=dBASE IV;User ID=Admin;Password=;" )
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Extended Properties=dBASE IV;User ID=Admin;Password=;" )
CASE Lower( Right( aOpenInfo[ UR_OI_NAME ], 3 ) ) == ".db"
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Extended Properties='Paradox 3.x';" )
aWAData[ WA_CONNECTION ]:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + aOpenInfo[ UR_OI_NAME ] + ";Extended Properties='Paradox 3.x';" )
CASE aWAData[ WA_ENGINE ] == "MYSQL"
aWAData[ WA_CONNECTION ]:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + aWAData[ WA_SERVER ] + ;
";database=" + aOpenInfo[ UR_OI_NAME ] + ;
";uid=" + aWAData[ WA_USERNAME ] + ;
";pwd=" + aWAData[ WA_PASSWORD ] )
aWAData[ WA_CONNECTION ]:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + aWAData[ WA_SERVER ] + ;
";database=" + aOpenInfo[ UR_OI_NAME ] + ;
";uid=" + aWAData[ WA_USERNAME ] + ;
";pwd=" + aWAData[ WA_PASSWORD ] )
case aWAData[ WA_ENGINE ] == "SQL"
aWAData[ WA_CONNECTION ]:Open( "Provider=SQLOLEDB;" + ;
"server=" + aWAData[ WA_SERVER ] + ;
";database=" + aOpenInfo[ UR_OI_NAME ] + ;
";uid=" + aWAData[ WA_USERNAME ] + ;
";pwd=" + aWAData[ WA_PASSWORD ] )
aWAData[ WA_CONNECTION ]:Open( "Provider=SQLOLEDB;" + ;
"server=" + aWAData[ WA_SERVER ] + ;
";database=" + aOpenInfo[ UR_OI_NAME ] + ;
";uid=" + aWAData[ WA_USERNAME ] + ;
";pwd=" + aWAData[ WA_PASSWORD ] )
CASE aWAData[ WA_ENGINE ] == "ORACLE"
aWAData[ WA_CONNECTION ]:Open( "Provider=MSDAORA.1;" + ;
"Persist Security Info=False" + ;
iif( Empty( aWAData[ WA_SERVER ] ),;
"", ";Data source=" + aWAData[ WA_SERVER ] ) + ;
";User ID=" + aWAData[ WA_USERNAME ] + ;
";Password=" + aWAData[ WA_PASSWORD ] )
aWAData[ WA_CONNECTION ]:Open( "Provider=MSDAORA.1;" + ;
"Persist Security Info=False" + ;
iif( Empty( aWAData[ WA_SERVER ] ),;
"", ";Data source=" + aWAData[ WA_SERVER ] ) + ;
";User ID=" + aWAData[ WA_USERNAME ] + ;
";Password=" + aWAData[ WA_PASSWORD ] )
CASE aWAData[ WA_ENGINE ] == "FIREBIRD"
aWAData[ WA_CONNECTION ]:Open( "Driver=Firebird/InterBase(r) driver;" + ;
"Persist Security Info=False" +;
";Uid=" + aWAData[ WA_USERNAME ] +;
";Pwd=" + aWAData[ WA_PASSWORD ] +;
";DbName=" + aOpenInfo[ UR_OI_NAME ] )
aWAData[ WA_CONNECTION ]:Open( "Driver=Firebird/InterBase(r) driver;" + ;
"Persist Security Info=False" +;
";Uid=" + aWAData[ WA_USERNAME ] +;
";Pwd=" + aWAData[ WA_PASSWORD ] +;
";DbName=" + aOpenInfo[ UR_OI_NAME ] )
ENDCASE
ELSE
aWAData[ WA_CONNECTION ] := win_OleAuto()
aWAData[ WA_CONNECTION ]:__hObj := aOpenInfo[ UR_OI_CONNECT ] /* "ADODB.Connection" */
aWAData[ WA_TABLENAME ] := t_cTableName
aWAData[ WA_QUERY ] := t_cQuery
aWAData[ WA_QUERY ] := t_cQuery
aWAData[ WA_USERNAME ] := t_cUserName
aWAData[ WA_PASSWORD ] := t_cPassword
aWAData[ WA_SERVER ] := t_cServer
@@ -344,7 +345,7 @@ STATIC FUNCTION ADO_OPEN( nWA, aOpenInfo )
aWAData[ WA_CONNOPEN ] := .F.
ENDIF
// will be initilized
/* will be initilized */
t_cQuery := ""
IF Empty( aWAData[ WA_QUERY ] )
@@ -359,7 +360,7 @@ STATIC FUNCTION ADO_OPEN( nWA, aOpenInfo )
oError:SubCode := 1001
oError:Description := HB_LANGERRMSG( EG_OPEN )
oError:FileName := aOpenInfo[ UR_OI_NAME ]
oError:OsCode := 0 // TODO
oError:OsCode := 0 /* TODO */
oError:CanDefault := .T.
UR_SUPER_ERROR( nWA, oError )
@@ -393,7 +394,7 @@ STATIC FUNCTION ADO_OPEN( nWA, aOpenInfo )
UR_SUPER_SETFIELDEXTENT( nWA, nTotalFields := oRecordSet:Fields:Count )
FOR n := 1 TO nTotalFields
aField := ARRAY( UR_FI_SIZE )
aField := Array( UR_FI_SIZE )
aField[ UR_FI_NAME ] := oRecordSet:Fields( n - 1 ):Name
aField[ UR_FI_TYPE ] := ADO_GETFIELDTYPE( oRecordSet:Fields( n - 1 ):Type )
aField[ UR_FI_TYPEEXT ] := 0
@@ -457,24 +458,22 @@ STATIC FUNCTION ADO_GETVALUE( nWA, nField, xValue )
xValue := PadR( xValue, :Fields( nField - 1 ):DefinedSize )
ENDIF
ELSEIF ADO_GETFIELDTYPE( :Fields( nField - 1 ):Type ) == HB_FT_DATE
// Null values
/* Null values */
IF ValType( xValue ) == "U"
xValue := hb_SToD()
ENDIF
#ifdef HB_FT_DATETIME
ELSEIF ADO_GETFIELDTYPE( :Fields( nField - 1 ):Type ) == HB_FT_DATETIME
// Null values
/* Null values */
IF ValType( xValue ) == "U"
xValue := hb_SToD()
ENDIF
#endif
#ifdef HB_FT_TIMESTAMP
ELSEIF ADO_GETFIELDTYPE( :Fields( nField - 1 ):Type ) == HB_FT_TIMESTAMP
// Null values
/* Null values */
IF ValType( xValue ) == "U"
xValue := hb_SToD()
ENDIF
#endif
ENDIF
ENDIF
END WITH
@@ -702,7 +701,7 @@ STATIC FUNCTION ADO_ORDINFO( nWA, nIndex, aOrderInfo )
LOCAL oRecordSet := aWAData[ WA_RECORDSET ]
LOCAL nResult := HB_SUCCESS
DO CASE
DO CASE
CASE nIndex == DBOI_EXPRESSION
IF ! Empty( aWAData[ WA_CATALOG ] ) .AND. !Empty( aOrderInfo[ UR_ORI_TAG ] ) .AND.;
aOrderInfo[ UR_ORI_TAG ] < aWAData[ WA_CATALOG ]:Tables( aWAData[ WA_TABLENAME ] ):Indexes:Count
@@ -841,10 +840,8 @@ STATIC FUNCTION ADO_FIELDINFO( nWA, nField, nInfoType, uInfo )
CASE nType == HB_FT_DATETIME
uInfo := "T"
#endif
#ifdef HB_FT_TIMESTAMP
CASE nType == HB_FT_TIMESTAMP
uInfo := "@"
#endif
CASE nType == HB_FT_LONG
uInfo := "N"
CASE nType == HB_FT_INTEGER
@@ -862,7 +859,7 @@ STATIC FUNCTION ADO_FIELDINFO( nWA, nField, nInfoType, uInfo )
ELSE
nLen := oRecordSet:Fields( nField - 1 ):DefinedSize
ENDIF
// Un campo mayor de 1024 lo consideramos un campo memo
/* Un campo mayor de 1024 lo consideramos un campo memo */
uInfo := iif( nLen > 1024, 10, nLen )
CASE nInfoType == DBS_DEC
@@ -1068,7 +1065,7 @@ STATIC FUNCTION ADO_SETREL( nWA, aRelInfo )
aWAData[ WA_CATALOG ]:Tables( aWAData[ WA_TABLENAME ] ):Keys:Append( cKeyName, adKeyForeign,;
aRelInfo[ UR_RI_CEXPR ], cChild, aRelInfo[ UR_RI_CEXPR ] )
RECOVER
// raise error for can't create relation
/* raise error for can't create relation */
END SEQUENCE
RETURN HB_SUCCESS
@@ -1268,7 +1265,9 @@ STATIC FUNCTION ADO_SEEK( nWA, lSoftSeek, cKey, lFindLast )
HB_SYMBOL_UNUSED( lSoftSeek )
HB_SYMBOL_UNUSED( cKey )
HB_SYMBOL_UNUSED( lFindLast )
/* TODO
/* TODO */
#if 0
LOCAL oRecordSet := USRRDD_AREADATA( nWA )[ WA_RECORDSET ]
LPCDXTAG pTag;
@@ -1276,7 +1275,7 @@ STATIC FUNCTION ADO_SEEK( nWA, lSoftSeek, cKey, lFindLast )
if ( FAST_GOCOLD( ( AREAP ) pArea ) == HB_FAILURE )
RETURN HB_FAILURE;
//oRecordSet:Find( aWAData[ WA_SCOPEINFO ][ UR_SI_CFOR ], iif( lContinue, 1, 0 ) )
/*oRecordSet:Find( aWAData[ WA_SCOPEINFO ][ UR_SI_CFOR ], iif( lContinue, 1, 0 ) ) */
LPCDXKEY pKey;
HB_ERRCODE retval = HB_SUCCESS;
HB_BOOL fEOF = HB_FALSE, fLast;
@@ -1289,20 +1288,20 @@ STATIC FUNCTION ADO_SEEK( nWA, lSoftSeek, cKey, lFindLast )
pArea->fTop = pArea->fBottom = HB_FALSE;
pArea->fEof = HB_FALSE;
if ( pTag->UsrUnique )
if( pTag->UsrUnique )
fLast = !pTag->UsrAscend;
else
fLast = pTag->UsrAscend ? fFindLast : !fFindLast;
// TODO: runtime error if valtype(pKeyItm) != pTag->Type
/* TODO: runtime error if valtype( pKeyItm ) != pTag->Type */
pKey = hb_cdxKeyPutItem( NULL, pKeyItm, fLast ? CDX_MAX_REC_NUM : CDX_IGNORE_REC_NUM, pTag, HB_TRUE, HB_FALSE );
hb_cdxIndexLockRead( pTag->pIndex );
hb_cdxTagRefreshScope( pTag );
ulRec = hb_cdxTagKeyFind( pTag, pKey );
if ( ( ulRec == 0 && ! fSoftSeek ) || pTag->TagEOF )
if( ( ulRec == 0 && ! fSoftSeek ) || pTag->TagEOF )
fEOF = HB_TRUE;
else // if ( fSoftSeek )
else /* if ( fSoftSeek ) */
{
if ( ! hb_cdxBottomScope( pTag ) )
fEOF = HB_TRUE;
@@ -1339,7 +1338,9 @@ STATIC FUNCTION ADO_SEEK( nWA, lSoftSeek, cKey, lFindLast )
pArea->fBof = HB_FALSE;
hb_cdxKeyFree( pKey );
RETURN retval;
*/
#endif
RETURN HB_FAILURE
STATIC FUNCTION ADO_FOUND( nWA, lFound )
@@ -1418,42 +1419,39 @@ STATIC FUNCTION ADO_GETFIELDSIZE( nDBFFieldType, nADOFieldSize )
LOCAL nDBFFieldSize := 0
DO CASE
CASE nDBFFieldType == HB_FT_STRING
nDBFFieldSize := nADOFieldSize
CASE nDBFFieldType == HB_FT_STRING
nDBFFieldSize := nADOFieldSize
CASE nDBFFieldType == HB_FT_INTEGER
nDBFFieldSize := nADOFieldSize
CASE nDBFFieldType == HB_FT_INTEGER
nDBFFieldSize := nADOFieldSize
CASE nDBFFieldType == HB_FT_DATE
nDBFFieldSize := 8
CASE nDBFFieldType == HB_FT_DATE
nDBFFieldSize := 8
CASE nDBFFieldType == HB_FT_DOUBLE
nDBFFieldSize := nADOFieldSize
CASE nDBFFieldType == HB_FT_DOUBLE
nDBFFieldSize := nADOFieldSize
#ifdef HB_FT_DATETIME
CASE nDBFFieldType == HB_FT_DATETIME
nDBFFieldSize := 8
CASE nDBFFieldType == HB_FT_DATETIME
nDBFFieldSize := 8
#endif
#ifdef HB_FT_TIMESTAMP
CASE nDBFFieldType == HB_FT_TIMESTAMP
nDBFFieldSize := 8
#endif
CASE nDBFFieldType == HB_FT_TIMESTAMP
nDBFFieldSize := 8
CASE nDBFFieldType == HB_FT_OLE
nDBFFieldSize := 10
CASE nDBFFieldType == HB_FT_OLE
nDBFFieldSize := 10
#ifdef HB_FT_PICTURE
CASE nDBFFieldType == HB_FT_PICTURE
nDBFFieldSize := 10
CASE nDBFFieldType == HB_FT_PICTURE
nDBFFieldSize := 10
#endif
CASE nDBFFieldType == HB_FT_LOGICAL
nDBFFieldSize := 1
CASE nDBFFieldType == HB_FT_LOGICAL
nDBFFieldSize := 1
CASE nDBFFieldType == HB_FT_MEMO
nDBFFieldSize := 10
CASE nDBFFieldType == HB_FT_MEMO
nDBFFieldSize := 10
ENDCASE
@@ -1465,120 +1463,116 @@ STATIC FUNCTION ADO_GETFIELDTYPE( nADOFieldType )
DO CASE
CASE nADOFieldType == adEmpty
CASE nADOFieldType == adTinyInt
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adEmpty
CASE nADOFieldType == adTinyInt
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adSmallInt
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adSmallInt
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adInteger
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adInteger
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adBigInt
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adBigInt
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adUnsignedTinyInt
CASE nADOFieldType == adUnsignedSmallInt
CASE nADOFieldType == adUnsignedInt
CASE nADOFieldType == adUnsignedBigInt
CASE nADOFieldType == adSingle
CASE nADOFieldType == adUnsignedTinyInt
CASE nADOFieldType == adUnsignedSmallInt
CASE nADOFieldType == adUnsignedInt
CASE nADOFieldType == adUnsignedBigInt
CASE nADOFieldType == adSingle
CASE nADOFieldType == adDouble
nDBFFieldType := HB_FT_DOUBLE
CASE nADOFieldType == adDouble
nDBFFieldType := HB_FT_DOUBLE
CASE nADOFieldType == adCurrency
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adCurrency
nDBFFieldType := HB_FT_INTEGER
CASE nADOFieldType == adDecimal
nDBFFieldType := HB_FT_LONG
CASE nADOFieldType == adDecimal
nDBFFieldType := HB_FT_LONG
CASE nADOFieldType == adNumeric
nDBFFieldType := HB_FT_LONG
CASE nADOFieldType == adNumeric
nDBFFieldType := HB_FT_LONG
CASE nADOFieldType == adError
CASE nADOFieldType == adUserDefined
CASE nADOFieldType == adVariant
nDBFFieldType := HB_FT_ANY
CASE nADOFieldType == adError
CASE nADOFieldType == adUserDefined
CASE nADOFieldType == adVariant
nDBFFieldType := HB_FT_ANY
CASE nADOFieldType == adIDispatch
CASE nADOFieldType == adIDispatch
CASE nADOFieldType == adIUnknown
CASE nADOFieldType == adIUnknown
CASE nADOFieldType == adGUID
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adGUID
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adDate
CASE nADOFieldType == adDate
#ifdef HB_FT_DATETIME
nDBFFieldType := HB_FT_DATETIME
nDBFFieldType := HB_FT_DATETIME
#else
nDBFFieldType := HB_FT_DATE
nDBFFieldType := HB_FT_DATE
#endif
CASE nADOFieldType == adDBDate
CASE nADOFieldType == adDBDate
#ifdef HB_FT_DATETIME
nDBFFieldType := HB_FT_DATETIME
nDBFFieldType := HB_FT_DATETIME
#else
nDBFFieldType := HB_FT_DATE
nDBFFieldType := HB_FT_DATE
#endif
CASE nADOFieldType == adDBTime
CASE nADOFieldType == adDBTime
CASE nADOFieldType == adDBTimeStamp
#ifdef HB_FT_TIMESTAMP
nDBFFieldType := HB_FT_TIMESTAMP
#else
//nDBFFieldType := HB_FT_DATE
#endif
CASE nADOFieldType == adDBTimeStamp
nDBFFieldType := HB_FT_TIMESTAMP
CASE nADOFieldType == adFileTime
CASE nADOFieldType == adFileTime
#ifdef HB_FT_DATETIME
nDBFFieldType := HB_FT_DATETIME
nDBFFieldType := HB_FT_DATETIME
#else
//nDBFFieldType := HB_FT_DATE
//nDBFFieldType := HB_FT_DATE
#endif
CASE nADOFieldType == adBSTR
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adBSTR
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adVarChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adVarChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adLongVarChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adLongVarChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adWChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adWChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adVarWChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adVarWChar
nDBFFieldType := HB_FT_STRING
CASE nADOFieldType == adBinary
nDBFFieldType := HB_FT_OLE
CASE nADOFieldType == adBinary
nDBFFieldType := HB_FT_OLE
CASE nADOFieldType == adVarBinary
nDBFFieldType := HB_FT_OLE
CASE nADOFieldType == adVarBinary
nDBFFieldType := HB_FT_OLE
CASE nADOFieldType == adLongVarBinary
nDBFFieldType := HB_FT_OLE
CASE nADOFieldType == adLongVarBinary
nDBFFieldType := HB_FT_OLE
CASE nADOFieldType == adChapter
CASE nADOFieldType == adChapter
CASE nADOFieldType == adVarNumeric
// case nADOFieldType == adArray
CASE nADOFieldType == adVarNumeric
/* CASE nADOFieldType == adArray */
CASE nADOFieldType == adBoolean
nDBFFieldType := HB_FT_LOGICAL
CASE nADOFieldType == adBoolean
nDBFFieldType := HB_FT_LOGICAL
CASE nADOFieldType == adLongVarWChar
nDBFFieldType := HB_FT_MEMO
CASE nADOFieldType == adLongVarWChar
nDBFFieldType := HB_FT_MEMO
CASE nADOFieldType == adPropVariant
nDBFFieldType := HB_FT_MEMO
CASE nADOFieldType == adPropVariant
nDBFFieldType := HB_FT_MEMO
ENDCASE
@@ -1616,7 +1610,9 @@ PROCEDURE HB_AdoSetPassword( cPassword )
PROCEDURE HB_AdoSetQuery( cQuery )
DEFAULT cQuery TO "SELECT * FROM "
IF ! ISCHARACTER( cQuery )
cQuery := "SELECT * FROM "
ENDIF
t_cQuery := cQuery
@@ -1634,7 +1630,7 @@ STATIC FUNCTION SQLTranslate( cExpr )
cExpr := SubStr( cExpr, 2, Len( cExpr ) - 2 )
ENDIF
cExpr := StrTran( cExpr, '""', "" )
cExpr := StrTran( cExpr, '""' )
cExpr := StrTran( cExpr, '"', "'" )
cExpr := StrTran( cExpr, "''", "'" )
cExpr := StrTran( cExpr, "==", "=" )
@@ -1647,13 +1643,17 @@ STATIC FUNCTION SQLTranslate( cExpr )
FUNCTION HB_AdoRddGetConnection( nWA )
DEFAULT nWA TO Select()
IF ! ISNUMBER( nWA )
nWA := Select()
ENDIF
RETURN USRRDD_AREADATA( nWA )[ WA_CONNECTION ]
FUNCTION HB_AdoRddGetCatalog( nWA )
DEFAULT nWA TO Select()
IF ! ISNUMBER( nWA )
nWA := Select()
ENDIF
RETURN USRRDD_AREADATA( nWA )[ WA_CATALOG ]
@@ -1661,7 +1661,9 @@ FUNCTION HB_AdoRddGetRecordSet( nWA )
LOCAL aWAData
DEFAULT nWA TO Select()
IF ! ISNUMBER( nWA )
nWA := Select()
ENDIF
aWAData := USRRDD_AREADATA( nWA )

View File

@@ -6,4 +6,8 @@
-olib/${hb_plat}/${hb_comp}/rddado
-inc
-w3 -es2
-stop{!win}
adordd.prg