16 Jun 2015 14:00
chv_=&("{||"+INDEXKEY(0)+"=["+; // so servem os registro que
IF(EMPT(criterio),"","T")+chv_1+"]}")*//// atendao ao filtro/relacao
DO WHILE !EOF() .AND. !BOF() .AND.; // pula qtos reg's forao pedidos
a_pular != ja_pulado //.AND. EVAL(chv_) // ate eof ou fora filtro/relacao
IF a_pular > 0 // pulando para frente
SKIP
ja_pulado++ // conta quando foroa pulados
ELSE // pulando para traz
SKIP -1
16 Jun 2015 15:06
16 Jun 2015 16:38
16 Jun 2015 18:38
16 Jun 2015 19:04
IF rddInfo( RDDI_CONNECT, { "ODBC", "192.168.1.1", "root", , "XXXX" } ) == 0
? "Unable connect to the server"
RETURN
ENDIF
16 Jun 2015 20:36
#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", "root","senha_do_root", "test" } ) == 0 // test é o DB que vem por padrão no Mysql.
? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
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
#require "rddsql"
#require "sddodbc"
#include "simpleio.ch"
REQUEST SQLMIX, SDDODBC
PROCEDURE Main()
LOCAL nConnection, nI, aI
#if defined( __HBSCRIPT__HBSHELL )
rddRegister( "SQLBASE" )
rddRegister( "SQLMIX" )
hb_SDDODBC_Register()
#endif
Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
rddSetDefault( "SQLMIX" )
nConnection := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={MySQL ODBC 5.3 Unicode Driver};dsn=;User=root;Pwd=SUA_SENHA;database=test;" } ) //Não precisa do DSN é opcional
IF nConnection == 0
? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
RETURN
ENDIF
? nConnection
? 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)" )
? dbUseArea( .T., , "SELECT * FROM country", "country" )
? "LASTREC:", LastRec()
DO WHILE ! Eof()
aI := Array( FCount() )
FOR nI := 1 TO FCount()
aI[ nI ] := FieldGet( nI )
NEXT
? RecNo(), hb_ValToExp( aI )
dbSkip()
ENDDO
? "LASTREC:", LastRec()
dbCloseAll()
RETURN
C:\fontes\teste>test2
1
.T.
.T.
.T.
.T.
LASTREC: 1
1 {"LTU", "Lithuania", 3369600}
2 {"USA", "United States of America", 305397000}
3 {"POR", "Portugal", 10617600}
4 {"POL", "Poland", 38115967}
5 {"AUS", "Australia", 21446187}
6 {"FRA", "France", 64473140}
7 {"RUS", "Russia", 141900000}
LASTREC: 7
C:\fontes\teste>
C:\Program Files\MySQL\MySQL Server 5.6\lib;
HB_WITH_MYSQL=C:\Program Files\MySQL\MySQL Server 5.6\include
16 Jun 2015 20:57
IF rddInfo( RDDI_CONNECT, { "mysql", "localhost", "root","mysql", "test" } ) == 0
? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
RETURN
ENDIF
? "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()
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
17 Jun 2015 06:40
E tem gente querendo colocar na cabeça dos outros que ADO é mais simples do que isso ?
? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
cnMySql:Execute( "DROP TALE country" )
17 Jun 2015 09:31
// Início do aplicativo:
Conexao():Open()
// final do aplicativo:
Conexao():Close()
// Função auxiliar
FUNCTION Conexao()
STATIC oConexao
IF oConexao == NIL
oConexao := win_OleCreateObject( "ADODB.Connection" )
oConexao:ConnectionString := "Driver=" + cMySqlDriver + ";Server=" + cServer + ";Option=131072;Stmt=;" + ;
"Database=" + cDatabase + ";User ID=" + cUser + ";Password=" + cPassword + ";"
oConexao:CursorLocation := adUseClient // cliente
oConexao:CommandTimeOut := 60 // seconds
oConexao:ConnectionTimeOut := 60 // seconds
ENDIF
RETURN oConexao
IF rddInfo( RDDI_CONNECT, { "mysql", "localhost", "root","mysql", "test" } ) == 0
17 Jun 2015 10:01
Lembre-se que a string é entre aspas simples.
Como fazer se dentro da string também tem aspas simples?
Ou data. Toda hora converter a data? Mais prático criar função.
No MySql, a barra "\" indica que o próximo caractere não faz parte do comando e deve ser usado como caractere.
FUNCTION StringSql( cTexto )
cTexto := StrTran( cTexto, [\], [\\] )
cTexto := StrTran( cTexto, ['], [\'] )
cTexto := ['] + cTexto + [']
RETURN cTexto
FUNCTION DateSql( dDate )
LOCAL cTexto
cTexto := StrZero( Year( dDate ), 4 ) + "-" + StrZero( Month( dDate ), 2 ) + "-" + StrZero( Day( dDate ), 2 )
IF cTexto == "0000-00-00"
cTexto := "NULL"
ELSE
cTexto := StringSql( cTexto )
ENDIF
RETURN cTexto
FUNCTION NumberSql( xValue )
RETURN Ltrim( Str( xValue ) )
cSql := "SELECT * FROM " + cTable + " LIMIT " + Ltrim( Str( nLimitStart ) ) + ", 1000"
oRs := cnMySql:Execute( cSql )
nQtdFields := oRs:Fields:Count() - 1
nQtdRec := oRs:RecordCount()
17 Jun 2015 12:37
Precisa instalar programa pra baixar do github
Precisa baixar os fontes do Harbour
precisa baixar compilador C
precisa baixar e instalar o servidor MySQL na máquina antes de gerar o Harbour
precisa configurar harbour, compilador c, pra gerar o Harbour
SET PATH=%PATH%;C:\Hb34\bin;C:\Mingw32\bin;C:\Program Files\MySQL\MySQL Server 5.6\lib;
SET HB_WITH_MYSQL=C:\Program Files\MySQL\MySQL Server 5.6\include
HB_INSTALL_PREFIX=C:\HB34
>\Lugar_onde_descompactou_os_fontes\win-make.exe clean install
17 Jun 2015 18:01
17 Jun 2015 20:27
Achar que isso é complicado para o pessoal xBase....
18 Jun 2015 01:48
18 Jun 2015 14:44
Ainda não apareceu o mesmo do SQLMIX, foram sempre partes incompletas.