Página 3 de 6

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 27 Set 2016 21:38
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 28 Set 2016 21:42
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".

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

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 08:27
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

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 09:17
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 09:28
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

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 11:49
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 12:08
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 12:10
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 12:37
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 12:56
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 13:56
por janio
Itamar,

só uma duvida...

Pra usar SQLMIX precisa ter o ODBC instalado?

Janio

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 14:04
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

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 15:14
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á............

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 15:22
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.

INICIANTE XHARBOUR - Como acessar .Fdb .Gdb

Enviado: 29 Set 2016 17:23
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.