Iniciante xHarbour - Como acessar .Fdb .Gdb

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

Moderador: Moderadores

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.

Caramba, passei o dia pesquisando o SQLMIX, e agora, ao final do dia, estou como o filósofo grego, Sócrates: "só sei que nada sei".
Está extremamente complicado pela enorme confusão de comandos e funções usados nos exemplos que consegui juntar.

Selecionei 5 exemplos básicos:

Código: Selecionar todos

EXEMPLO 1  .................................................
nConn := rddInfo( RDDI_CONNECT, { "MYSQL", "192.168.2.99", "egbadm","12345","egba" } )

============================================================================

EXEMPLO 2  .................................................
c_Rdd := RDDSETDEFAULT( "SQLMIX" )
cAttributes:="Server=;Database=127.0.0.1:c:\dados\tabelas.fdb;User=SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};"
nConn := RDDINFO( RDDI_CONNECT, { "ODBC", cAttributes } )

============================================================================

EXEMPLO 3  .................................................
nConn := RDDINFO(RDDI_CONNECT,{"ODBC","Server=.\SQLEXPRESS;Driver={SQL Server};dsn=;Uid=sa;database=test;pwd=pass" },'SQLMIX' )

============================================================================

EXEMPLO 4  .................................................
db := FBConnect("Small.gdb", "sysdba", "masterkey")

============================================================================

EXEMPLO 5  .................................................
vMEU_SQL    := "FIREBIRD=" + vHOST + ":" + vDATABASE + ";UID=" + vUSUARIO :+
               ";PWD=" + vSENHA + ;";charset=" + vCHARSET
nCnn := SR_AddConnection( CONNECT_FIREBIRD, vMEU_SQL )
FINALIZANDO:

Não encontrei exemplos coerentes (na minha curta visão do SQLMIX), e acho que isto que achei na NET não representa o TODO desta LIB.

Assim, meu amigo, me dê um empurrão, explicando as diferenças acima citadas.
E ainda, se possível, me fornecer uma função de conexão, com a respectiva string, sem o uso do ODBC, que é um complicador na hora da distribuição do aplicativo.

É evidente que ainda faltam muitos passos e muitas horas de queima-neurônios para finalizar a aplicativo que tenho em mente.
E espero contar com os valiosos ensinamentos dos colegas.
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 »

Bom dia Itamar.

Seguindo o fio da meada, selecionei um PRG que suponho seja SQLMIX puro (sem ODBC).


Código: Selecionar todos

#include "dbinfo.ch"
#include "error.ch"
#include "hbrddsql.ch"
#include "firebird.ch"   // PARA FIREBIRD
*
REQUEST HB_GT_WIN_DEFAULT                                                 && Janela DOS - Temporário para testes.
*
REQUEST SDDMY, SQLMIX
ANNOUNCE RDDSYS
*
PROCEDURE Main()
rddSetDefault( "SQLMIX" )

IF rddInfo( RDDI_CONNECT, { "MYSQL", "G:\Dev\DentalOff\Small.gdb", "egbadm","12345","egba" } ) == 0
    ? "Unable connect to the server 1"
    RETURN
ENDIF
dbUseArea( .T. , , "SELECT * FROM produtos", "prod" )
qout( "OK table 1" )

IF rddInfo( RDDI_CONNECT, { "MYSQL", "192.168.2.100", "egbadm","12345", "egba" } ) == 0
    ? "Unable connect to the server 2"
    RETURN
ENDIF
dbUseArea( .T. , , "SELECT * FROM resuentr", "resu" )
qout( "OK table 2" )

dbCloseAll()
RETURN
Quando compilado com xHarbour:
Error: Unresolved external '_HB_FUN_SDDMY' referenced from G:\DEV2\DENTALOFF\OBJ\SMALL_03.OBJ
Error: Unresolved external '_HB_FUN_SQLMIX' referenced from G:\DEV2\DENTALOFF\OBJ\SMALL_03.OBJ

Estão faltando LIB's e não sei qual possa ser. Caso seja a SQLMIX.lib eu não a tenho. De onde
posso baixá-la ?

======================================================================================

Compilado com a MiniGui 3.4.1:
Copilado com sucesso;
Na linha de Conexão abaixo falhou com "MYSQL":
IF rddInfo( RDDI_CONNECT, { "MYSQL", "G:\Dev\DentalOff\Small.gdb", "egbadm","12345","egba" } ) == 0
Certamente os valores "egbadm","12345","egba" estão incorretos. Quais seriam estes valores ?

======================================================================================
IF rddInfo( RDDI_CONNECT, { "SQLMIX", "G:\Dev\DentalOff\Small.gdb", "egbadm","12345","egba" } ) == 0
Também falhou a conexão com "SQLMIX".

======================================================================================
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 »

Hassa,

Pensei que vc queria apenas MIGRAR um banco firebird para o seu sistema, por isso indiquei aquele utilitario do SyGecom.

Mas vc quer eh migrar de dbf para sql o sistema inteiro?

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 »

Bom dia Janio.

Se fosse somente migrar somente de DBF para Firebird é moleza. Já tenho isto em uso. Mas também é com o ADO.

Agora o problema atual:
Tenho um Banco gerado por um aplicativo comercial de terceiro.
O meu propósito inicial é geral alguns relatórios a partir de uma base Firebird, para uso de empresas que possuem este aplicativo de terceiro instalado.
Mas, certamente, haverá algum momento em que terei que interagir com o Banco Firebird, como por exemplo, marcar os registros que deram origem a um determinado procedimento ou relatório.

Como este meu aplicativo será instalado em máquinas de vários clientes, quanto mais nativo, e menos dependente de outros plug-ins, melhor.

O uso do ODBC em clientes sempre é um complicador, pois o técnico que faz a instalação daquele aplicativo de terceiro que gera o Banco, também fará a instalação do meu aplicativo gerador de relatórios.

Consegui transmitir o meu problema ?

Mas o meu problema agora, é uma conexão fácil segura com o Banco. Acredito que os demais procedimentos (leitura e gravação) serão bem mais fáceis, pelo menos, foi o que a literatura pesquisada dá a impressão.

Já usei o ADO (ou melhor, está em uso num cliente). Apesar da extensa lista de prg's facilitar a programação parece meio gambiarra.
Quero testar outras opções, e dentre elas, uma foi a sugestão de usar o SQLMIX.
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 »

Ok,

Atualmente eu uso Mediator para trabalhar com MySql. Mas no futuro pretendo utilizar SQLMIX e eliminar essa 'ponte' que eh o Mediator!
IF rddInfo( RDDI_CONNECT, { "MYSQL", "G:\Dev\DentalOff\Small.gdb", "egbadm","12345","egba" } ) == 0
? "Unable connect to the server 1"
RETURN
ENDIF
Achei isso estranho no seu codigo. Vc quer acessar uma base FIREBIRD, mas informa no primeiro parametro MYSQL??? Não entendi

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 »

Na realidade fiz teste com SQLMIX e também com o MYSQL, já que os exemplos abordam os 2, e por fim acabei por copiar o 2º teste. Erro meu.
Mas o resultado foi igual.

Como postei anteriormente, eu acredito que o erro certamente deve estar nos parâmetros passados, aquela coisa esquisita, como abaixo, em vermelho, já que nunca vi parâmetros assim:

rddInfo( RDDI_CONNECT, { "SQLMIX", "G:\Dev\DentalOff\Small.gdb", "egbadm","12345","egba" } ) == 0

Me ocorreu agora que isto pode ser o User e a Senha (SYSDBA e masterkey), ficando a dúvida no último. Vou fazer um teste hoje a tarde.
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 »

Dê uma olhada neste site:
https://groups.google.com/forum/#!topic ... qDDiRyOcBA

É uma miscelânia de MYSQL com SQLMIX que não dá para entender assim à primeira vista. Vou ter que queimar mais alguns neurônios.

Ali cita o exemplo que eu adaptei para:

Código: Selecionar todos

IF rddInfo( RDDI_CONNECT, { "FIREBIRD", "localhost", "SYSDBA", "masterkey", "G:\Dev\DentalOff\Small.gdb" } ) == 0
Mas que também não funcionou.
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 »

Testei com:

Código: Selecionar todos

IF rddInfo( RDDI_CONNECT, { "SQLMIX", "localhost", "SYSDBA", "masterkey", "G:\Dev\DentalOff\Small.gdb" } ) == 0
E também não funcionou.
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!
Sinto muito, com xHarbour não vai. Vai ter que mudar para o Harbour 3.2 ou 3.4 eu uso o 3.4, nesse poderei testar algum problema ai.
Se for para aprender, escolha um só.
Certamente os valores "egbadm","12345","egba" estão incorretos. Quais seriam estes valores ?
Tente usar o MySQL ou FB via HeidiSQL(MySQL) ou FlameRobin(FB) aprender como se conectar sem usar Harbour ou xHarbour.
Aprenda a usar os BD´s sem o [x]Harbour ok ?
Como criar as tabelas, incluir etc... por fora, sem usar SQLMIX ou ADO, pela linha de comando, siga um tutorial basicão que você pode achar ai na NET.
Falta noções básicas ai da sua parte.

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!
Primeira coisa depois de instalado o SGBD, é testar a conexão.
Vai ter que ler no manual do BD como fazer isso, depois que aprender isso, ai vc pode fazer com SQLMIX ou ADO.
No windows fica em:

Código: Selecionar todos

Painel de Controle\Todos os Itens do Painel de Controle\Ferramentas Administrativas
Fontes de Dados (ODBC)
É lá que vc vai configurar a conexão conforme está vendo ai nos exemplos que postou.
Tem um tutorial bom aqui.
https://pctoledo.org/forum/viewto ... 43&t=15019

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
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 »

Itamar,

só uma duvida...

Pra usar SQLMIX precisa ter o ODBC instalado?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
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 »

rddSetDefault( "SQLMIX" )
nConnection := RDDINFO( RDDI_CONNECT, ;
{ "ODBC", "Server=localhost;Driver={MySQL ODBC 3.51 Driver};dsn=;User=root;pwd=;database=test;" } )

A mim funcionou como acima.
viewtopic.php?f=43&t=15019&start=60#p105494
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 »

Ao Itamar: Já havia percebido que com o xHarbour não funciona.
Agora estou compilando com a MiniGui 3.4.1

Recapitulando TUDO:

Com o Flamerobin eu crio Banco e Tabelas dentro do Banco, sem problemas.
Com o Flamerobin eu faço insert, update, commit, delete, etc., tudo via linha de comando, sem problemas.

O problema é com a Conexão programada com o BD é que surge o problema.

Os meus últimos testes:

Código: Selecionar todos

#include "dbinfo.ch"
#include "error.ch"
#include "hbrddsql.ch"
#include "firebird.ch"   // PARA FIREBIRD

REQUEST HB_GT_WIN_DEFAULT                                                 && Janela DOS - Temporário para testes.

REQUEST SDDMY, SQLMIX
ANNOUNCE RDDSYS

PROCEDURE Main()

   SETMODE( 25, 80 )
   rddSetDefault( "SQLMIX" )

   clear
   ? "inciando a conexão..."

   RDDSETDEFAULT("SQLMIX")

   && RDDINFO(RDDI_CONNECT, {"MYSQL",    "server",     "user",   "password" , "database" },                    [driver] )
   &&  Teste 01
   *IF RDDINFO(RDDI_CONNECT, {"FIREBIRD", "localhost:", "SYSDBA", "masterkey", "G:\Dev2\DentalOff\Small.gdb" }, "SQLMIX" ) == 0

   &&  Teste 02
   *IF RDDINFO( RDDI_CONNECT, { "FIREBIRD","localhost", "SYSDBA","masterkey","G:\Dev2\DentalOff\Small.gdb" } ) == 0

   &&  Teste 03
   IF RDDINFO( RDDI_CONNECT, { "SQLMIX", "localhost", "SYSDBA", "masterkey", "G:\Dev\DentalOff\Small.gdb" } ) == 0
       ? "Unable connect to the server 1"
       wait "A conexão falhou.............."
       RETURN( .F. )
   ENDIF

   wait "conectado........"
RETURN( nil )
Observar que tenho 3 linhas de conexão. Nenhuma das 3 linhas funcionou (teste 01, 02 e 03, comentando e descomentando a respectiva linha). O retorno é sempre ZERO, ou seja SEM conexão.

A sintaxe deve estar correta em vista da pesquisa nos sites, como:
https://groups.google.com/forum/#!topic ... hewwABM1FM, (com uma consulta do Itamar...),
https://groups.google.com/forum/#!topic ... qDDiRyOcBA, e
https://jcsn.wordpress.com/harbour-mini ... rdd-sql-2/

Estou desconfiado que está faltando algo como uma LIB, um CH, uma configuração, ou sei lá............
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 »

No caso do post do Janio, acima:
rddSetDefault( "SQLMIX" )
nConnection := RDDINFO( RDDI_CONNECT, ;
{ "ODBC", "Server=localhost;Driver={MySQL ODBC 3.51 Driver};dsn=;User=root;pwd=;database=test;" } )
Esta sintaxe já usa o ODBC. Porquê, se supostamente o SQLMIX não precisa de ODBC.
Estas misturas é que dão o nó.

E ainda há uma outra sintaxe:

Código: Selecionar todos

cAttributes:="Server=;Database=127.0.0.1:c:\temp\test.fdb;User=SYSDBA;Password=masterkey;Driver={Firebird/InterBase(r) driver};"
nConn := RDDINFO( RDDI_CONNECT,{"ODBC",cAttributes} ) 
Que também usa ODBC.
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!
Aqui eu conecto com bases FB assim com o harbour 3.4

Código: Selecionar todos

Request  SQLMIX, SDDODBC
cRdd  := RDDSETDEFAULT( "SQLMIX" )
cAttributes:="Server=;Database=127.0.0.1:c:\fontes\dados\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
Talvez vc precise adicionar no resquest SDDMY e SDDFB se for sem ODBC(Acho) não sei, estou aprendendo nesta parte também, eu uso o ODBC.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder