Iniciante xHarbour - Como acessar .Fdb .Gdb

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciante xHarbour - Como acessar .Fdb .Gdb

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Anexos
fb conexao.png
Saudações,
Itamar M. Lins Jr.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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:

Código: Selecionar todos

small_03.prg

sddfb.hbc
sddodbc.hbc
sddmy.hbc
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:
Anexos
ODBC.jpg
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem por Hasse »

Sim, Janio.

Está devidamente configurado. E o teste retorna êxito na conexão. Então o problema não está aqui.
Anexos
ODBC_config.jpg
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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 ?
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Mensagem 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

Código: Selecionar todos

#include "hbrddsql.ch"
Comentando ela, ai sim funcionou.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Iniciante xHarbour - Como acessar .Fdb .Gdb

Mensagem 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.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Responder