onde encontro material sobre o SQLMIX?
No Harbour, na pasta contrib\hbsql e em outras pastas tem exemplos.
na pasta \contrib\sddodbc\tests
Usando SQLMIX em BASE MDB (access) o SQLRDD não faz isso!!!
#require "rddsql"
#require "sddodbc"
#include "simpleio.ch"
REQUEST SDDODBC, SQLMIX
PROCEDURE Main()
#if defined( __HBSCRIPT__HBSHELL )
rddRegister( "SQLBASE" )
rddRegister( "SQLMIX" )
hb_SDDODBC_Register()
#endif
Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
rddSetDefault( "SQLMIX" )
? "Connect:", rddInfo( RDDI_CONNECT, { "ODBC", "DBQ=" + hb_DirBase() + "..\..\hbodbc\tests\test.mdb;Driver={Microsoft Access Driver (*.mdb)}" } )
? "Use:", dbUseArea( .T., , "select * from test", "test" )
? "Alias:", Alias()
? "DB struct:", hb_ValToExp( dbStruct() )
Inkey( 0 )
Browse()
INDEX ON FIELD->SALARY TO salary
dbGoTop()
Browse()
dbCloseArea()
RETURN
Conectando e usando com MySQL.
#require "rddsql"
#require "sddmy"
#include "dbinfo.ch"
#include "error.ch"
REQUEST SDDMY
REQUEST SQLMIX
ANNOUNCE RDDSYS
FIELD RESIDENTS
PROCEDURE Main()
#if defined( __HBSCRIPT__HBSHELL )
rddRegister( "SQLBASE" )
rddRegister( "SQLMIX" )
hb_SDDMY_Register()
#endif
rddSetDefault( "SQLMIX" )
? "RDDs:"; AEval( rddList(), {| x | QQOut( "", x ) } )
IF rddInfo( RDDI_CONNECT, { "MYSQL", "localhost", "test", , "test" } ) == 0
? "Unable connect to the server"
RETURN
ENDIF
CreateTable()
? "Let's browse table (press any key)"
Inkey( 0 )
dbUseArea( .T., , "SELECT * FROM country", "country" )
Browse()
? "Let's browse table ordered by resident count (press any key)"
Inkey( 0 )
INDEX ON field->RESIDENTS TAG residents TO country
Browse()
dbCloseAll()
RETURN
STATIC PROCEDURE CreateTable()
? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
? rddInfo( RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11))" )
? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600), ('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
RETURN
Conectando e usando com PgSQL(PostGres)
#require "rddsql"
#require "sddpg"
#include "dbinfo.ch"
#include "error.ch"
REQUEST SDDPG
REQUEST SQLMIX
ANNOUNCE RDDSYS
FIELD RESIDENTS, CODE, NAME
PROCEDURE Main()
LOCAL tmp
#if defined( __HBSCRIPT__HBSHELL )
rddRegister( "SQLBASE" )
rddRegister( "SQLMIX" )
hb_SDDPG_Register()
#endif
rddSetDefault( "SQLMIX" )
? "RDDs:"; AEval( rddList(), {| x | QQOut( "", x ) } )
IF rddInfo( RDDI_CONNECT, { "POSTGRESQL", "postgresql://localhost/postgres" } ) == 0
? "Unable connect to the server"
RETURN
ENDIF
CreateTable()
? "Let's browse table (press any key)"
Inkey( 0 )
dbUseArea( .T., , "SELECT * FROM country", "country" )
Browse()
? "Let's browse table ordered by resident count (press any key)"
Inkey( 0 )
INDEX ON field->RESIDENTS TAG residents TO country
Browse()
dbCloseArea()
/* append and goto tests */
dbUseArea( .T., "SQLMIX" , "SELECT * FROM country", "country" )
FOR tmp := 500 TO 600
dbAppend()
field->CODE := StrZero( tmp, 3 )
field->NAME := "Test append " + hb_ntos( tmp )
NEXT
dbGoto( 101 )
INDEX ON field->RESIDENTS TAG residents TO country
dbCloseAll()
RETURN
STATIC PROCEDURE CreateTable()
LOCAL tmp
? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
? rddInfo( RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int)" )
? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600), ('USA', 'United States of America', 305397000), ('POR', 'Portugal', 10617600), ('POL', 'Poland', 38115967), ('AUS', 'Australia', 21446187), ('FRA', 'France', 64473140), ('RUS', 'Russia', 141900000)" )
FOR tmp := 1 TO 100
rddInfo( RDDI_EXECUTE, "INSERT INTO country VALUES ('" + StrZero( tmp, 3 ) + "', 'TestSQL " + hb_ntos( tmp ) + "', 3369600)")
NEXT
RETURN
E com FB que eu mesmo usei aqui.
cRdd := RDDSETDEFAULT( "SQLMIX" )
cAttributes:="Server=;Database=127.0.0.1:c:\dados\datafb.fdb;User=SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};"
nConn := RDDINFO( RDDI_CONNECT,{"ODBC",cAttributes} )
IF nConn == 0
hwg_Msginfo( "Não conectado ao servidor: " + str(RDDINFO( RDDI_ERRORNO )) + hb_eol() + RDDINFO( RDDI_ERROR ) )
RDDSETDEFAULT( cRdd )
RETURN
ENDIF
DBUSEAREA( .T.,"SQLMIX", "select * from PRODUTO", "xx" )
index on refere TO temp1
DBUSEAREA( .T.,"SQLMIX", "select * from TAB_PRECO", "xZ" )
index on StrZero(CODIGO,15) TO temp2
DBUSEAREA( .T.,"SQLMIX", "select * from TAB_PROD", "xy" )
index on StrZero(INPRODUTO,15) TO temp3
Com MSSQL que eu fiz tambem.
cRdd := RDDSETDEFAULT( "SQLMIX" )
nConn := RDDINFO( RDDI_CONNECT, { "ODBC", "Driver={SQL Server Native Client 10.0};Server=localhost;database=DATA_Z;Uid=MATRIZ;Pwd=zzzz" })
IF nConn == 0
hwg_Msginfo( "Não conectado ao servidor: " + str(RDDINFO( RDDI_ERRORNO )) + HB_EOL() + RDDINFO( RDDI_ERROR ) )
RDDSETDEFAULT( cRdd )
RETURN
ENDIF
DBUSEAREA( .T.,"SQLMIX", "select * from dbo.TB_PRODUTOS_", "tp" )
index on id_produto tag 01 to yy_temp
DBUSEAREA( .T.,"SQLMIX", "select * from dbo.VW_DADOS_", "xx" )
index on codigo tag 01 to xhwg_temp
index on idproduto tag 02 to xhwg_temp
Saudações,
Itamar M. Lins Jr.