Clipper On Line • Ver Tópico - Roteiro para acessar o MySQL com o Mediator

Roteiro para acessar o MySQL com o Mediator

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Roteiro para acessar o MySQL com o Mediator

Mensagempor paulobergo » 05 Jul 2008 14:24

Quanto aos que não conseguiram colocar nada do Mediator para funcionar
ainda, segue aí meu "caminho das pedras"...

Abraços...

a) Descrição do ambiente

Servidor

Asus, Pentium 4 1.6, 512mb hd 80gb 7200rpm
XP SP2
Antivirus: Avira
Firewall do Windows: ativado; exceções (entre outras): 3306
MySQL 5027
ODBC 3.51
BDE Borland Database Engine (desnecessária nesse caso)
Internet: rádio, 300k (média, 256k)

Estação: PCChips AMD K6 II 500 128mb
Windows98Se
Antivirus: -
Firewall: Não
Internet: discada, 33600

b) Instalado, no servidor, o OTC Mediator v.4.2.6.0 for MySQL
Nenhuma configuração específica foi feita, ou seja, instalei
o Mediator ("free, para 100conexões"), reiniciei a máquina
e iniciei o mediador desktop; o Firewall do XP imediatamente
me perguntou se eu queria mantê-lo bloqueado, ao que respondi
não... (posteriormente, ativei o Mediator como serviço mas
assim não funcionou, então, por enquanto, o "mediator service"
fica na geladeira e sigo com o mediator desktop mesmo...)

c) Criação de uma aplicação teste.
Instalei o Mediator Cliente; ele criou várias subpastas na
pasta "medcl", para xharbour, clipper, oracle, etc...
Foi preciso copiar LIBs e OBJs para as respectivas pastas
do xHarbour.

A versão do XHarbour que eu uso é a 997

- Copiados para a pasta XHarbour\lib: medntxmt.lib, cmnnet32.lib,
medntx.lib, a partir da pasta C:\medcl\Xharbour\lib\build997\b32
- Copiado, para a pasta-fonte da aplicação teste, o arquivo
noautlog.obj, também a partir da pasta C:\medcl\Xharbour\lib\build997\b32
- Criado um arquivo simples de teste:

No Servidor, dentre vários bancos de dados (catálogos) no MySQL, criei uma
query, testada no MySQL Administrator e no DBExplorer (Borland, Delphi 3 a 6),
para visualizar os produtos vendidos em um determinado período.
Os itens vendidos, com data, quantidade e código de barras, no banco do
Caixa ("siapos02" é o "alias" do caixa02), relacionados à tabela de produtos,
em outro banco ("siafat" que é o alias da "retaguarda").

Criei um arquivo .ini com as configurações para acesso ao MySQL.
Apesar de informar no arquivo ".ini" apenas o banco "siapos02", o Mediator,
do lado do servidor, através do ODBC, acessou os dois bancos e retornou
o que eu realmente queria. O arquivo medapp.ini está descrito mais abaixo.

O programa fonte:
// ******** teste.prg
Function Main()
Param mpcodi, mpauto, mpuser, str_path

// #include 'rddsys.ch'
// REQUEST RDDSYS

#include 'button.ch'   // Menu definitions
#include 'inkey.ch'    // Key definitions
#include "mediator.ch"
request medntx
RDDSETDEFAULT("MEDNTX")

* Usando comando SQL para visualizar dados de uma tabela...
? "**********************************************************"
? "Usando comandos SQL para visualizar os resultados de uma consulta"
?
sQuery := "select sp_cod, sp_data, sp_qtd, estnome "+;
          "from `siapos02`.`term` "+;
          "inner join `siafat`.`estcada` "+;
          "  on (term.sp_cod=estcada.estcodb) "+;
          "  order by sp_data limit 100"
? sQuery
? "**********************************************************"
Use query AS sQuery
? " Código EAN   Nome/Descrição/Identificação do Produto     Data  Quantidade"
? "------------- ---------------------------------------- ---------- ------- "
While .Not. Eof()
  ? PadL(sp_cod, 14)+" "+estnome+" "+Dtoc(sp_data)+" "+Str(sp_qtd, 7, 3)
  Skip
EndDo
? "**********************************************************"
Use


- Criado um arquivo para fazer a compilação; na definição
LIBFILES foi preciso incluir medntx.lib cmnnet32.lib medntxmt.lib:

#BCC
VERSION=BCB.01
!ifndef CC_DIR
CC_DIR = $(MAKE_DIR)
!endif

!ifndef HB_DIR
HB_DIR = $(HARBOUR_DIR)
!endif

RECURSE= NO

SHELL =
COMPRESS = NO
EXTERNALLIB = NO
XFWH = NO
FILESTOADD =  5
WARNINGLEVEL =  0
USERDEFINE =
USERINCLUDE =
GUI = NO
MT = NO
PROJECT = c:\projetos\fatntx32\teste.exe $(PR)
OBJFILES = teste.obj $(OB)
PRGFILES = teste.prg $(PS)
OBJCFILES = $(OBC)
CFILES = $(CF)
RESFILES =
RESDEPEN =
TOPMODULE = teste.prg
LIBFILES = medntx.lib cmnnet32.lib medntxmt.lib lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtwin.lib codepage.lib ct.lib tip.lib pcrepos.lib hsx.lib hbsix.lib
EXTLIBFILES =
DEFFILE =
HARBOURFLAGS =  -w0
CFLAG1 =  -OS $(SHELL)  $(CFLAGS) -d -c -L$(HB_DIR)\lib
CFLAG2 =  -I$(HB_DIR)\include;$(CC_DIR)\include
RFLAGS =
LFLAGS = -L$(CC_DIR)\lib\obj;$(CC_DIR)\lib;$(HB_DIR)\lib -Gn -M -m -s -Tpe -x -ap
IFLAGS =
LINKER = ilink32

ALLOBJ = c0x32.obj $(OBJFILES) $(OBJCFILES)
ALLRES = $(RESDEPEN)
ALLLIB = $(LIBFILES) import32.lib cw32.lib
.autodepend

#DEPENDS

#COMMANDS
.cpp.obj:
$(CC_DIR)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $**

.c.obj:
$(CC_DIR)\BIN\bcc32 -I$(HB_DIR)\include $(CFLAG1) $(CFLAG2) -o$* $**

.prg.obj:
$(HB_DIR)\bin\harbour -D__EXPORT__ -n -go -I$(HB_DIR)\include $(HARBOURFLAGS) -o$* $**

.rc.res:
$(CC_DIR)\BIN\brcc32 $(RFLAGS) $<

#BUILD

$(PROJECT): $(CFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
    $(CC_DIR)\BIN\$(LINKER) @&&! 
    $(LFLAGS) +
    $(ALLOBJ), +
    $(PROJECT),, +
    $(ALLLIB), +
    $(DEFFILE), +
    $(ALLRES)
!

**********


- Criada a aplicação, fiz uma cópia do arquivo de configuração da
conexão a ser usada, para a pasta do executável. O arquivo
medapp.ini recebeu os parâmetros para acesso ao banco de dados:

MEDNODEADDR=sampa.homeip.net
medsocket=19c8
medcs=siapos02
meduser=root
medpasswd=adoroklb


d) Executando a aplicação, obtive este resultado:

**********************************************************
Usando comandos SQL para visualizar os resultados de uma consulta

select sp_cod, sp_data, sp_qtd, estnome from `siapos02`.`term` inner join `siafa
t`.`estcada`   on (term.sp_cod=estcada.estcodb)   order by sp_data limit 100
**********************************************************
C¾digo EAN   Nome/DescriþÒo/IdentificaþÒo do Produto     Data  Quantidade
------------- ---------------------------------------- ---------- -------
0000000159074 SAP.COIOTE 357                           07/14/07   1.000
0000000100052 CAMISA POOL 19458                        07/26/07   1.000
0000000010207 PICANHA SUINA TEMPERADA CX9              07/31/07   1.000
0000000100052 CAMISA POOL 19458                        08/03/07   1.000
0000000149044 CHUCHU                                   06/05/08   1.000
0000000149044 CHUCHU                                   06/24/08   0.250
0000000149044 CHUCHU                                   06/24/08   1.000
0000001210019 CARAMELO UN                              06/24/08   2.000
0000000149044 CHUCHU                                   06/24/08   0.500
0000000149044 CHUCHU                                   06/24/08   1.000
0000000149044 CHUCHU                                   06/24/08   0.250
0000001810042 FITA INCOLOR                             06/24/08   1.500
0000003940020 MILHO DE PIPOCA PACOTE 100G              06/24/08   1.000
0000003940020 MILHO DE PIPOCA PACOTE 100G              06/24/08   0.500
0000001810042 FITA INCOLOR                             06/24/08   1.500
0000001810042 FITA INCOLOR                             06/24/08   1.000
0000000149044 CHUCHU                                   06/24/08   1.000
0000000149044 CHUCHU                                   06/24/08   0.500
0000000149044 CHUCHU                                   06/24/08   1.000
0000000149044 CHUCHU                                   06/24/08   1.250
0000001810042 FITA INCOLOR                             06/24/08   1.250
0000001810042 FITA INCOLOR                             06/24/08   1.000
**********************************************************
C:\Projetos\fatntx32>


e) Para quem não conhece ainda um comando select do SQL, na lista
acima código, data e quantidade vieram de uma tabela, relacionada
a outra, de onde veio o nome do produto.

f) Bom... e qual a vantagem disso? atualmente, minhas aplicações
xHarbour acessando as tabelas MySQL via DLL desenvolvida no
Delphi são muito mais lentas, uma vez que precisam dos componentes
e DLLs da ZeusLib para acesso ao MySQL.

g) E, finalmente, porque migrar dos DBFs Ntx, CDX, IDX, MDX para
MySQL (ou outro SQL)?

Bom... comecei a "migração" a partir de 2003... de lá prá cá, nunca
mais tive problemas de corrupção de índices, dados corrompidos,
travamentos, etc... pude desenvolver aplicações web rodando
em conjunto com as desktop em Delphi e Clipper (xHarbour)...
A segurança do esquema cliente-servidor, então, não tem
comparação... toda gravação, leitura, acesso é feito no servidor;
Com a Internet então, os avanços são incríveis... não preciso de
vpn, pastas compartilhadas, nada de complicado...

Espero ter colaborado...
Abraços!
Não se vê bem com insolação... é essencial cobrir os olhos...
paulobergo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 30
Data de registro: 09 Nov 2007 07:54
Cidade/Estado: Juiz de Fora-MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Roteiro para acessar o MySQL com o Mediator

Mensagempor Dudu_XBase » 05 Jul 2008 16:42

Paulo Boa Tarde e Parabéns.
Mais um que teve sucesso com o Mediator.

Estou usando hoje além da ultima versão do mediator para xharbour 1.0, estou usando o sqlrdd do xharbour comercial.
Hoje temos nosso banco de Dados Sql Server num datacenter ele é acessado pelo sistema em xharbour livre usando a sqlrdd.
Em outras aplicações usamos o Mediator possuímos um servidor parrudo com linux que segura o Mysql e o Mediator Server aqui interno.
Adquiri a Sqlrdd por alguns motivos por ter suporte aqui no Brasil e por ela acessar o Sql Server que segura nosso ERP/CRM.
Hoje a maioria de nossos sistemas estão em xharbour, outros em Delphi e em implantação um novo em C# ("Ci Charpi")...rs..
Nessa exigência on demand estamos usando o serviço da Corpflex o Citrix e nossas páginas WEB (php/asp) também estão em sincronia nossos bancos "essiqueélis" sejam eles Mysql ou Sql Server...
Outra coisa o mediator trabalha bem junto com o sqlrdd. Esse foi meu primeiro teste ver se ambos juntos num mesmo prg não teria algum tipo de conflito...vai saber neh....
Possuo uma consulta que pego informações do sql server via sqlrdd e junto com outras que estão no mysql via Mediator....sem crise...e tbrowse neles..kkkk


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Dudu_XBase
Membro Master

Membro Master
 
Mensagens: 1036
Data de registro: 25 Ago 2003 16:55
Curtiu: 24 vezes
Mens.Curtidas: 9 vezes

Re: Roteiro para acessar o MySQL com o Mediator

Mensagempor janio » 12 Fev 2009 10:34

Dudu,

Por gentileza, vc poderia postar um tutorial passo-a-passo de como instalar o Mediator + ODBC no linux, igual ao que vc postou para o windows??

Já tentei por aqui mas não obtive sucesso...

Jânio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Re: Roteiro para acessar o MySQL com o Mediator

Mensagempor alaminojunior » 12 Fev 2009 10:58

    MEDNODEADDR=sampa.homeip.net
    medsocket=19c8
    medcs=siapos02
    meduser=root
    medpasswd=adoroklb



Só uma observação Paulo: O mediator permite que você configure a senha, à nível de "Mediator", e não à nível de Banco de Dados. Sendo assim, você configura a sua aplicação para acessar o Mediator, e este de alguma forma acessa as tabelas pra você. E porquê tudo isto ? Convenhamos que deixar o caminho das tabelas (logins, portas e senhas) dentro do .ini não é muito seguro.
Procure nas configurações do Mediator, que existe isso lá. Se não encontrar, poste de novo que a gente ajuda. :D
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar de usuário

alaminojunior
Colaborador

Colaborador
 
Mensagens: 1689
Data de registro: 16 Dez 2005 20:26
Cidade/Estado: Ubatuba - SP
Curtiu: 27 vezes
Mens.Curtidas: 11 vezes

Re: Roteiro para acessar o MySQL com o Mediator

Mensagempor gilsonpaulo » 10 Mar 2009 22:14

Como ninguem respondeu e muitos devem cair aqui:
REQUEST MEDNTX        
RDDSETDEFAULT("MEDNTX")  //Para usar indices NTX
//REQUEST DBFCDX              //Para usa indices CDX
//RDDSETDEFAULT ( "DBFCDX" )

logRes = MedLogin("","127.0.0.1","cea","root","cg4bpr","clinica")


Não esquecer de adicionar o OBJ NOAUTLOG.OBJ a compilação.

Outra coisa, o mediator usa a porta em hexadecimal, para descobrir qual porta abrir no roteador use a calculadora do proprio windows, faça a conversão do valor hexadecimal do Mediator para decimal.

Ex.: 19c7 = a porta 6599 para quem quer continuar utillizando porta padrao do Mysql 3306 tem que configurar a opcao logo apos a o ip para a porta CEA

Espero ter ajudado.
gilsonpaulo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 135
Data de registro: 02 Fev 2008 10:30
Cidade/Estado: Quatro Barras
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Roteiro para acessar o MySQL com o Mediator

Mensagempor janio » 25 Mar 2009 15:47

Colegas,

Podem postar um tutorial para LINUX semelhante ao o q fizeram para windows??
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Re: Roteiro para acessar o MySQL com o Mediator

Mensagempor sygecom » 24 Abr 2009 13:09

Olá Janio,
Já deu uma olhada nesse link:
http://www.otc.pl/download/files_en/mmy ... ALL_EN.TXT
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7017
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro