Página 1 de 1

Sincronizar banco de dados MySQL na WEB com DBFCDX

Enviado: 10 Abr 2008 11:43
por Luciano Bonfim
Caros,

Tenho uma aplicaçäo em xharbour com dbfcdx e vou criar um módulo na WEB usando (ASP + MYSQL) para inputar determinadas informaçöes.

Essas informaçöes que estaräo na WEB depois tem que ser incluídas no meu sistema quando o usuário clicar numa opçäo de "sincronismo" que estará no sistema xharbour.

A minha dúvida é como posso fazer esse sincronismo?

Tem como eu de dentro da minha aplicaçäo abrir esse banco de dados MYSQL e copiar as informaçöes para o meu DBF?

Muito Obrigado

Enviado: 10 Abr 2008 12:08
por MARCELOG
Olá Amiguinho, tem sim.

Código: Selecionar todos

FUNCTION X()

LOCAL oServer, cQuery, oQuery, i

oServer:=TMYSQLSERVER():NEW(cHostName,cUserName,cPassword)

IF oServer:NETERR() // Falha na conexão com o banco de dados

   MSGSTOP(oServer:ERROR())

   oServer:DESTROY()

   RETURN

ENDIF

cQuery := 'USE MEU_BANCO'

oQuery := oServer:QUERY(cQuery)

IF oQuery:NETERR() // Falha na utilização do banco de dados

   MSGSTOP(cQuery+CRLF+;
           ALLTRIM(STR(oQuery:ERRORNO()))+CRLF+;
           oQuery:ERROR())

   oQuery:DESTROY()

   RETURN 

ENDIF

cQuery := 'SELECT * FROM MINHA_TABELA' // Como exemplo tem 3 campos

oQuery := oServer:QUERY(cQuery)

IF oQuery:NETERR() // Falha na leitura da tabela

   MSGSTOP(cQuery+CRLF+;
           ALLTRIM(STR(oQuery:ERRORNO()))+CRLF+;
           oQuery:ERROR())

   oQuery:DESTROY()

   RETURN 

ENDIF

USE MEU_DBF // Como exemplo tem 3 campos

FOR i := 1 TO oQuery:LASTREC

      DBAPPEND()
      FIELDPUT(1,oQuery:GETROW(i):FIELDGET(1))
      FIELDPUT(2,oQuery:GETROW(i):FIELDGET(2))
      FIELDPUT(3,oQuery:GETROW(i):FIELDGET(3))
      DBCOMMIT()
      DBUNLOCK()

NEXT i

RETURN
O usuário tem que ter permissão de leitura da tabela no banco de dados.

MARCELOG

Enviado: 10 Abr 2008 13:17
por Luciano Bonfim
Obrigado Marcelo,

e pra fazer o inverso, ou seja, gravar dados da minha aplicaçäo para a base de dados na WEB?

Enviado: 10 Abr 2008 14:21
por rodrmigu
Olá,

cQuery := 'UPDATE minha_tabela SET campo1 = 123, campo2 = 456 WHERE campo3 = 123456'

O resto vc pode usar o que já foi passado pra executar.:

oQuery := oServer:QUERY(cQuery)

IF oQuery:NETERR() .....

[]'s
Rodrigo

Enviado: 12 Abr 2008 15:36
por rochinha
Amiguinho

Voce usa Harbour, ja é um começo, então de uma olhada na sessão codigo fonte, a respeito da ADOxB e veja os exemplos de como INPUTar dados numa tabela MySQL usando comandos parecidissimos com o xBase.

Quanto ao acesso remoto bastara voce colocar na string de conexão o endereço correto de acesso ao MySQL externo e pronto.

Enviado: 12 Abr 2008 18:08
por Luciano Bonfim
Caro Rochinha,

qual LIB eu devo linkar na minha aplicacao para usar ess ADOxb?

preciso linkar a mysql.lib da contrib?

Muito Obrigado

Enviado: 12 Abr 2008 19:15
por Luciano Bonfim
já entendi rochinha...

criei o adoxb.prg e adoxb.ch que estäo no tópico e compilei e linkei no meu sistema.

o adoxb.ch dá um erro comentei a linha e funcinou, o meu com o adoxb.prg dá problema na linha 265, tirei a parte cometada e funcionou...

quando executo um exemplo simples dá erro: TOLEAUTO/-1

uso o xharbour 1.0.0 o que pode ser?

Enviado: 12 Abr 2008 19:18
por rochinha
Amiguinho,

Tudo que voce precisa esta disponibilizado no post, a ADOxB usa o recurso OLE do xHarbour para fazer a ponte com a API do ADO existente em sua maquina, caso não tenha, instale um Access, pois o ADO, deve ser recurso padrão nos XPs em diante, em 98 voce precisa instalar JET, DCOM, etc.

Leia o post desde o inicio e voce verá que lá consta todo o codigo, atualizado e com exemplos praticos.

Preste atenção em:

Código: Selecionar todos

//#define _ADO_xHarbour_ // Habilite esta linha caso pretenda usar xHarbour
#ifndef _ADO_xHarbour_
        #define _ADO_Harbour_
#endif 
Aqui voce habilita a compilação para xHarbour ou Harbour pois o objeto OLE é gerenciado no Harbour por TOLEAuto() e no xHarbour por CreateObject().

ADO é pradrão no XP?

Enviado: 21 Abr 2008 16:09
por dotNET-man
Qual opção do componente do Windows devo ativar para disponibilizar o ADO no XP?
Só consigo usar o ADO nos computadores onde instalei o .NET.
Sérgio

Enviado: 22 Abr 2008 13:01
por sygecom
Olá Sergio,
Sou meio leigo nesse negocio de ADO, mas um projeto Open que esta me ajudando a entender melhor isso tudo é o "ourXdbu" que vc encontra no SourceForge:
http://sourceforge.net/projects/ourxdbu/
E claro a LIB do Rochinha tmb. ajuda pra caramba.
https://pctoledo.org/forum/viewto ... 72&start=0

Enviado: 26 Abr 2008 12:06
por rochinha
Amiguinho

Para ter acesso ao ADO em outros Windows sem o .NET voce deve instalar o JET da Micro$oft compativel com a versão de seu Windows.

Se o Windows for muito antigo, tipo Win98 ou ME voce deverá instalar também, aso não esteja instalado o DCOM compativel com o mesmo.

E ai é só sair pro abraço.

Se analisar o meu codigo ADO verá que não existe dificuldade de trabalhar com o mesmo em qualquer linguagem pois o acesso via OLE proporciona uma interface muito similar ao acesso via VB e/ou Delphi.