Página 4 de 6
Iniciante xHarbour - Como acessar .Fdb .Gdb
Enviado: 29 Set 2016 18:11
por Itamar M. Lins Jr.
Oi,
Fiz os testes aqui com o MySQL, rodou OK.
Código: Selecionar todos
#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","root" , "test" } ) == 0
? "Could not 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
Detalhe foi esse;
{ "MYSQL", "localhost", "root","root" , "test" } , o primeiro "root" é o usuário e segundo "root" é a senha, "test" é a pasta que ficará a tabela country.
Neste caso o acesso foi nativo sem o ODBC, pois eu não especifiquei nada, ele por padrão deve ter acessado a porta do MySql.
Saudações,
Itamar M. Lins Jr.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 29 Set 2016 18:15
por Hasse
Olá Itamar.
Realmente acho que tenho algum problema aqui.
Com o Flamerobin acesso normalmente.
Mesmo inserindo a tua última sintaxe, NADA.
Me diga, quando do uso do ODBC, não precisa configurar a conexão via ODBC ?
Não precisa criar uma conexão para o Firebird no ODBC ?
Para conectar com o Oracle precisa configurar esta conexão.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 29 Set 2016 18:26
por Itamar M. Lins Jr.
Ola!
Meu nobre, eu estou ligando o MYSQL(HEIDISQL), FLAMEROBIN é para o FIREBIRD.
Precisa concentrar em uma coisa só, pois está postando coisas de um e de outro.
A conexão do FB é mais simples porque já postei aqui n vezes.
Saudações,
Itamar M. Lins Jr.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 29 Set 2016 18:31
por Itamar M. Lins Jr.
Ola!
Recapitulando TUDO:
No REQUEST vc não colocou o principal "SDDFB" faltou.
Esse é o problema, faz o REQUEST do SDDMY(MYSQL) e tenta conexão com o FB... pode ser isso ai.
Melhor chamar todos.
REQUEST DBFCDX, DBFFPT, DBFDBT, LETO, SQLMIX, SDDODBC, SDDFB.
Saudações,
Itamar M. Lins Jr.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 29 Set 2016 20:45
por Hasse
Agora deu erro de compilação:
Harbour 3.2.0dev (r1506261250)
Copyright (c) 1999-2015,
http://harbour-project.org/
C:/Users/Padrao/AppData/Local/Temp/hbmk_s8n2fi.dir/small_03.o:small_03.c:(.data+0x1d8): undefined reference to `HB_FUN_SDDFB'
collect2.exe: error: ld returned 1 exit status
hbmk2[Small_03]: Erro: Executando linkeditor. 1
gcc.exe C:/Users/Padrao/AppData/Local/Temp/hbmk_s8n2fi.dir/small_03.o C:/Users/Padrao/AppData/Local/Temp/hbmk_s8n2fi.dir/hbmk_y2d6o3.o G:/DEV2/DentalOff/_temp.o -mwindows -Wl,--start-group -lhmg -lcrypt -ledit -leditex -lgraph -lini -lreport -lhfcl -lmsvfw32 -lvfw32 -lhbct -lhbwin -lhbmzip -lminizip -lhbmemio -lhbmisc -lhbmysql -lmysql -lhbtip -lhbsqlit3 -lsddodbc -lrddsql -lsddmy -lhbodbc -lodbc32 -lhbhpdf -lhbfimage -lhbpgsql -lhbnetio -lxhb -lpng -llibhpdf -lhbvpdf -lhbzebra -lhbextern -lhbdebug -lhbvmmt -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -oSmall_03.exe -LC:/hmg.3.4.1/harbour/lib/win/mingw -LC:/hmg.3.4.1/lib
hbmk2: Dica: Adicionar op‡Æo 'sddfb.hbc' faltando nas fun‡äes: SDDFB()
Isto é uma DLL ? Se for, não encontrei.
Se for LIB também não.
No Harbour\Contrib tem uma pasta SDDFB, mas está vazia.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 29 Set 2016 21:02
por Itamar M. Lins Jr.
Ola!
Pois é, sobre aquela outra questão que estava em dúvida, é o seguinte:
Se usamos: rddinfo(RDDI_CONNECT,{"ODBC" aqui estamos conectando via ODBC e assim, rddinfo(RDDI_CONNECT,{"MYSQL" estamos usando a conexão via a lib SDDMY, respondendo ao Janio também. Tem que ter a chamada delas lá no REQUEST se for nativo.
Sem a lib do FB você não vai conseguir conectar mesmo.
Quando gero os fontes aqui eu tenho instalado o firebird na pasta, então eu uso isso ai em baixo na hora de criar o Harbour 3.4
Código: Selecionar todos
HB_WITH_FIREBIRD=C:\Program Files\Firebird\Firebird_2_5\include
Olhe no GIT do 3.2 para ver se esta lá. No 3.4 tem isso aqui.
Código: Selecionar todos
Diretório: C:\Users\Itamar\Documents\GitHub\harbour-core\contrib\sddfb
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 27/11/13 13:36 tests
-a--- 07/04/16 14:23 20506 core.c
-a--- 27/11/13 13:36 158 sddfb.hbc
-a--- 12/02/16 10:04 773 sddfb.hbp
-a--- 27/11/13 13:36 1024 sddfb.hbx
C:\Users\Itamar\Documents\GitHub\harbour-core\contrib\sddfb [master = +0 ~1 -0 !]>
Via ODBC vai funcionar ai é simples, nos seu exemplos não está assim:
Código: Selecionar todos
REQUEST DBFCDX, DBFFPT, SQLMIX, SDDODBC
Function Main(...)
cRdd := RDDSETDEFAULT( "SQLMIX" )
cAttributes:="Server=;Database=127.0.0.1:c:\fontes\dados.fdb;User=SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};"
nConn := RDDINFO( RDDI_CONNECT,{"ODBC",cAttributes} )
IF nConn == 0
alert( "Não conectado ao servidor: " + str(RDDINFO( RDDI_ERRORNO )) + hb_eol() + RDDINFO( RDDI_ERROR ) )
RDDSETDEFAULT( cRdd )
RETURN
ENDIF
Saudações,
Itamar M. Lins Jr.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 29 Set 2016 21:54
por Itamar M. Lins Jr.
Ola!
Me diga, quando do uso do ODBC, não precisa configurar a conexão via ODBC ?
Precisa configurar, e na string de conexão tem que está com o mesmo nome.
Saudações,
Itamar M. Lins Jr.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 06 Out 2016 21:51
por Hasse
Boa noite Itamar.
Baixei e Instalei o ODBC do Firefird. Ele ficou exatamente como você mostra na figura, e mesmo assim ainda não conecta.
Alterou somente a versão do ODBC para 2.00.04.155.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 09 Out 2016 19:14
por Hasse
Boa noite /Bom dia.
Fiz mais alguns testes de conexão, todos infrutíferos.
Usando o Harbour 3.2.0dev (r1609281755) / MingW - Instalado ontem, 08/10/2016.
Abaixo o PRG.
Código: Selecionar todos
*
#include "dbinfo.ch"
#include "error.ch"
#include "hbrddsql.ch"
#include "firebird.ch" // PARA FIREBIRD
#include "simpleio.ch"
*
#require "rddsql"
#require "sddmy"
*
REQUEST SDDMY, SQLMIX, DBFCDX, SDDODBC, SDDFB
*
ANNOUNCE RDDSYS
*
PROCEDURE Main()
*
SETMODE( 25, 80 )
rddSetDefault( "SQLMIX" )
Set( _SET_DATEFORMAT, "yyyy-mm-dd" )
*
clear
*
? "RDD's instaladas: >>"
?? AEval( rddList(), {| x | QQOut( "", x ) } ) && Retorna
? "-----------------------------------------------------"
*
nConn1 := rddInfo( RDDI_CONNECT, { "ODBC", "Server=localhost;Driver={Firebird/InterBase(r) driver 2.00.04.155};dsn=;User=SYSDBA;Password=masterkey;database=G:\Dev2\DentalOff\Small.gdb;" } )
IF ValType( nConn1 ) = "N"
? "Connecetion=>", nConn1
ELSEIF ValType( nConn1 ) = "A"
? "Retornou ARRAY para nConn1"
For x1 = 1 TO Len( nConn1 )
? x1, nConn1[x1]
Next x1
ELSE
Alert( 'Problema de connection em nConn1' )
ENDIF
*
? "-----------------------------------------------------"
*
cAttributes:="Server=localhost;Database=G:\Dev2\DentalOff\Small.gdb;User=SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};"
nConn5 := RDDINFO( RDDI_CONNECT,{ "ODBC", cAttributes } )
*
IF ValType( nConn5 ) = "N"
? "Connecetion=>", nConn5
ELSEIF ValType( nConn5 ) = "A"
? "Retornou ARRAY para nConn5"
For x1 = 1 TO Len( nConn5 )
? x1, nConn5[x1]
Next x1
ELSE
Alert( 'Problema de connection em nConn5' )
ENDIF
*
? "-----------------------------------------------------"
*
cAttributes:="Server=localhost;Database=127.0.0.1:G:\Dev2\DentalOff\Small.gdb;User=SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};"
nConn6 := RDDINFO( RDDI_CONNECT,{ "ODBC", cAttributes } )
*
IF ValType( nConn6 ) = "N"
? "Connecetion=>", nConn6
ELSEIF ValType( nConn6 ) = "A"
? "Retornou ARRAY para nConn6"
For x1 = 1 TO Len( nConn6 )
? x1, nConn6[x1]
Next x1
ELSE
Alert( 'Problema de connection em nConn6' )
ENDIF
*
? "-----------------------------------------------------"
*
RETURN
Abaixo o HBP:
Abaixo o RETORNO, que suponho seja
NÃO CONECTADO:
RDD's instaladas: >> SQLBASE SQLMIX DBF DBFCDX
-----------------------------------------------------
Retornou ARRAY para nConn1
1 ODBC
2 Server=localhost;Driver={Firebird/InterBase(r) driver 2.00.04.155};ds
n=;User=SYSDBA;Password=masterkey;database=G:\Dev2\DentalOff\Small.gdb;
-----------------------------------------------------
Retornou ARRAY para nConn5
1 ODBC
2 Server=localhost;Database=G:\Dev2\DentalOff\Small.gdb;User=SYSDBA;Pas
sword=masterkey;Driver={Firebird/InterBase(r) driver};
-----------------------------------------------------
Retornou ARRAY para nConn6
1 ODBC
2 Server=localhost;Database=127.0.0.1:G:\Dev2\DentalOff\Small.gdb;User=
SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};
-----------------------------------------------------
Peço testarem o meu PRG / HBP, para ver se a conexão retorna com sucesso.
JPG do meu ODBC Firebird instalado no Anexo:
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 09 Out 2016 19:57
por janio
Hasse,
Nessa tela do ODBC, vc tem que IR em "FONTE DE DADOS DO SISTEMA" e ADICIONAR o drive pra firebird e CONFIGURAR A CONEXÃO!
Pelo menos pra MySql isso eh necessário. Não sei pra firebird... mas deve ser tbm!
Janio
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 09 Out 2016 21:53
por Hasse
Sim, Janio.
Está devidamente configurado. E o teste retorna êxito na conexão. Então o problema não está aqui.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 10 Out 2016 08:45
por Itamar M. Lins Jr.
Ola!
Na string de conexão, não se coloca a parte dos números. apenas "Driver={Firebird/InterBase(r) driver};"
Aqui eu uso assim:
Código: Selecionar todos
cAttributes:="Server=;Database=127.0.0.1:c:\temp\xxxx.gdb;User=SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};"
nConn := RDDINFO( RDDI_CONNECT,{"ODBC",cAttributes} )
Usando ODBC.
Saudações,
Itamar M. Lins Jr.
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 10 Out 2016 09:39
por Hasse
Bom dia Itamar.
Podes observar que somente no teste nConn1 é que usei o número da versão do ODBC. Os testes de nConn5 e nConn6 foram feitos sem o número do driver ODBC.
Veja os valores retornados em "Quote" nos 3 testes seguidos, nConn1, nConn5 e nConn6.
Me parece que há algo errado justamente entre a conexão do meu aplicativo e o ODBC. Esta string de conexão está correta ?
Deve haver algum detalhe a mais que ainda esteja faltando.!!!!!!!
Segundo eu entendi o retorno da Função RDDINFO deve ser um número, correto ? E retorna um ARRAY com a string de conexão.
Este fato não indica qual o erro ?
INICIANTE XHARBOUR - Como acessar .Fdb .Gdb
Enviado: 10 Out 2016 09:44
por Itamar M. Lins Jr.
Ola!
Fiz alguns testes aqui com seu código e realmente não conectava.
Nisso fui tirando comentando cada linha do seu código, até chegar na linha
Comentando ela, ai sim funcionou.
Saudações,
Itamar M. Lins Jr.
Iniciante xHarbour - Como acessar .Fdb .Gdb
Enviado: 10 Out 2016 09:56
por Hasse
Oi Itamar.
Comentei a linha mencionada e retornou "Error Base/1003 Variable does not exist: RDDI_CONNECT".
Esta variável está justamente naquele arquivo "hbrddsql.ch".
Então deve haver outro arquivo que contenha esta variável, e que não tenho declarado no meu PRG.