Nova versão:
Suporte inicial para MySQL.
https://drive.google.com/open?id=1X8Sh3AHQY2rzGhMCO-dcRAQZzFR4aGDc

Moderador: Moderadores
"Talvez para as colunas vazias na primeira linha você possa colocar um tamanho de 10 ou 20? Assim pelo menos mostra que tem o campo, mas não perde tempo tentando achar o maior de todos com a função MAX()."
"De qualquer forma isso pode ser um problema na "vida real" e precisariamos encontrar uma solução viável..."
"Outra coisa é sobre os caracteres acentuados que estão aparecendo errado, veja na imagem que você mesmo enviou."
"Você poderia enviar junto o arquivo .hbp que usa para compilar o programa?"
#ifdef DEBUG
.prg.c:
\harbour\bin\harbour /n /q0 /gc0 /w3 /b /v /DDEBUG /i\harbour\include $<
.c.obj:
cl /c /TP /Zi /Wall /DDEBUG /I\harbour\include $<
#else
.prg.c:
\harbour\bin\harbour /n /l /gc0 /q0 /w3 /DNDEBUG /i\harbour\include $< >> harbour.log
.c.obj:
cl /c /TP /Wall /O2xtyb1 /Gy /GS- /GR- /EHs- /I\harbour\include $<
#endif
hbsql.c: hbsql.prg
abrws.c: abrws.prg
brws.c: brws.prg
queries.c: queries.prg
rddsys.c: rddsys.prg
hbsql.obj: hbsql.c
abrws.obj: abrws.c
brws.obj: brws.c
queries.obj: queries.c
rddsys.obj: rddsys.c
out = hbsql.exe
#ifdef DEBUG
$(Out): $(Objects)
link @debug.lnk > hbsql.log
#else
$(Out): $(Objects)
link @release.lnk > hbsql.log
#endif
/out:hbsql.exe
/subsystem:console
/release
/opt:ref
hbsql.obj
abrws.obj
brws.obj
queries.obj
hbvm.lib
hbrtl.lib
hbpp.lib
hbcommon.lib
hbnulrdd.lib
hbmacro.lib
hblang.lib
gtwin.lib
\usr\lib\sqlite\sqlite3.lib
\usr\lib\postgresql\libpq.lib
\usr\lib\mysql\libmysql.lib
\harbour\lib\hbdbd.lib
shell32.lib
user32.lib
winspool.lib
ole32.lib
olepro32.lib
ws2_32.lib
kernel32.lib
gdi32.lib
comctl32.lib
comdlg32.lib
advapi32.lib
iphlpapi.lib
winmm.lib
Onde estão as funções DBD_*()?
hazael escreveu:Olha, não fique chateado, mas projeto privado, fechado e pago não me interessa e sinceramente acho não vai intereressar ninguém... melhor usar ADO, ODBC ou SQLMIX que é aberto, gratuÃto e funciona.
Só não queria que ficasse frustrado com a baixa aceitação e antes que invista o seu tempo desenvolvendo para ninguém se interessar, achei melhor deixar você saber."
hazael escreveu:"Sem contar que não vai fazer pelos padrões do Harbour com uso do hbmk2 que é a ferramenta básica e indicada para qualquer compilação, mesmo para geração de Libs. Leve em consideração que o Harbour está em contÃnuo desenvolvimento, é livre, aberto, permite usar compiladores diferentes, 32/64 bits, se não vem o código fonte para gerar junto com um pacote de compilação, provavelmente vai ficar muito difÃcil usar. Isso poderia funcionar para o Harbour 3.0 mas acho que não valeria a pena pois já está muito defasado..."
? Rs:Field(1):Value
? Rs:Field( "CODIGO" ):Value
...
aValues[ 1 ]
aValues[ "CODIGO" ]
WITH OBJECT cnMySql
:CreateCreate()
:QueryAdd( "FINUMLAN", mfiNumLan )
:QueryAdd( "FITIPLAN", iif( oNFE:Emitente:Cnpj == jpempre->emCnpj, "1", "2" ) )
:QueryAdd( "FINUMDOC", oNFE:cNumDoc )
:QueryAdd( "FIDATEMI", oNFE:DataEmissao )
:QueryAdd( "FIPARCELA", StrZero( 1, 3 ) )
:QueryAdd( "FICLIFOR", mCliCod )
:QueryAdd( "FISACADO", mCliCod )
:QueryAdd( "FIVALOR", oNFE:Totais:ValNot )
:QueryAdd( "FIDATVEN", oNFE:DataEmissao )
:QueryAdd( "FIPEDIDO", jppedi->pdPedido )
:QueryAdd( "FIINCINF", LogInfo() )
:DBFQueryExecuteInsert()
:QueryExecuteInsert( "JPFINAN" )
ENDWITH
JoséQuintas escreveu:Não esqueça da opção de usar nome de campo.
Até mesmo na TMySQL tem isso.
E no ADO tem isso também.
Fica extremamente antiprático usar por número ao invés de nome.
Nem que seja array do tipo HASH."
aValues[ "CODIGO" ] := 1
JoséQuintas escreveu:Ranier
Não lembro se foi no seu fonte, lembro de ter visto o uso de funções separadas dos parêntesis, tipo Str ( 2 )
CUIDADO
Uma onde isso pode ser problema:
SELECT ( nArea )
Select( nArea )
No Clipper/Harbour/XHarbour existe o comando SELECT e a função Select()
O comando é pra trocar área em uso, e a função apenas retorna a área atual, ou a área aonde o arquivo está aberto.
Então... o espaço em branco NESSE caso faz muita diferença.
PUBLIC oRs
ADOSetRDD( "Firebird" )
StrDatabase := "Z:\D_\disco\E\FONTES\NFW\harbour\libs\adodb\gdb\adogdb.gdb"
StrConnection := "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; Database="+StrDatabase+"; DIALECT=3" //; vendorclient=gds32.dll;"
MsgRun( "Conectando..." )
ADO CONNECT StrConnection
oRs := oRecordSet
// Cria tabelas se nao existirem
if ADOFile( "clientes" )
else
MsgRun( "Criando tabela CLIENTES..." )
ADO EXECUTE "DROP TABLE clientes"
ADO EXECUTE "CREATE TABLE clientes (nome char(45), email char(45), unique(nome))"
endif
if ADOFile( "siglas" )
else
MsgRun( "Criando tabela SIGLAS..." )
ADO EXECUTE "DROP TABLE siglas"
ADO EXECUTE "CREATE TABLE siglas (uf char(2), estado char(20), unique(uf))"
endif
if ADOFile( "teste" )
else
MsgRun( "Criando tabela TESTE..." )
ADO EXECUTE "DROP TABLE teste"
ADO EXECUTE "CREATE TABLE teste (uf char(2), estado char(20), unique(uf))"
endif
// Abre as tabelas
ADO USE clientes
ADO USE siglas
// Verifica se ja possuem dados
ADO SELECT clientes
//ADO GOTOP
nRegistros := ADORecCount()
// ? ADOAlias(), nRegistros
if nRegistros = 0
ADO APPEND BLANK
ADO REPLACE nome WITH "JOSE CARLOS DA ROCHA"
ADO REPLACE email WITH "IROCHINHA@ITELEFONICA.COM.BR"
ADO COMMIT
endif
ADO SELECT siglas
//ADO GOTOP
nRegistros := ADORecCount()
// ? ADOAlias(), nRegistros
if nRegistros = 0
ADO APPEND BLANK
ADO REPLACE uf WITH "SP"
ADO REPLACE estado WITH "SAO PAULO"
ADO COMMIT
ADO APPEND BLANK
ADO REPLACE uf WITH "RJ"
ADO REPLACE estado WITH "RIO DE JANEIRO"
ADO COMMIT
endif
MsgRun( "Executando..." )
ADO SELECT clientes
ADO GOTOP
MsgRun( "Executando SET FILTER TO nome like '*teste*'..." )
ADO SET FILTER TO "nome like '*tete*'"
if ADOEof()
? 'Nada foi filtrado'
ADO SET FILTER TO
ADO GOTOP
endif
Browse( oRs )
ADO SET FILTER TO
MsgRun( "Executando LOCATE nome like 'TESTES'..." )
ADO LOCATE "nome like 'TESTES*'"
if ADOEof()
? 'Nada foi encontrado'
ADO GOTOP
endif
Browse( oRs )
//MsgRun( "Executando SORT ON nome..." )
//ADO SORT ON clientes.nome
//Browse( oRs )
//WBrowseRecordSet( oRs, StrField2 )
//Browse( oRs )
ADO CLOSE
if ADOFile( "clientes" )
else
MsgRun( "Criando tabela CLIENTES..." )
ADO EXECUTE "DROP TABLE clientes"
ADO EXECUTE "CREATE TABLE clientes (nome char(45), email char(45), unique(nome))"
endif
if ! ADOFile( "clientes" )
MsgRun( "Criando tabela CLIENTES..." )
ADO EXECUTE "DROP TABLE clientes"
ADO EXECUTE "CREATE TABLE clientes (nome char(45), email char(45), unique(nome))"
endif
ADO EXECUTE "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..."
cnMySql:Execute( "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..." )
// oADO:Execute( "CREATE TABLE IF NOT EXISTS JPREGUSO ( ..." )
Retornar para Ferramentas de Apoio
Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes