Página 1 de 1

Roteiro para acessar o MySQL com o Mediator

Enviado: 05 Jul 2008 14:24
por paulobergo
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:

Código: Selecionar todos

// ******** 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:

Código: Selecionar todos

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

Código: Selecionar todos

MEDNODEADDR=sampa.homeip.net
medsocket=19c8
medcs=siapos02
meduser=root
medpasswd=adoroklb
d) Executando a aplicação, obtive este resultado:

Código: Selecionar todos

**********************************************************
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!

Re: Roteiro para acessar o MySQL com o Mediator

Enviado: 05 Jul 2008 16:42
por Dudu_XBase
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

Re: Roteiro para acessar o MySQL com o Mediator

Enviado: 12 Fev 2009 11:34
por janio
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

Re: Roteiro para acessar o MySQL com o Mediator

Enviado: 12 Fev 2009 11:58
por alaminojunior

Código: Selecionar todos

    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

Re: Roteiro para acessar o MySQL com o Mediator

Enviado: 10 Mar 2009 22:14
por gilsonpaulo
Como ninguem respondeu e muitos devem cair aqui:

Código: Selecionar todos

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.

Re: Roteiro para acessar o MySQL com o Mediator

Enviado: 25 Mar 2009 15:47
por janio
Colegas,

Podem postar um tutorial para LINUX semelhante ao o q fizeram para windows??

Re: Roteiro para acessar o MySQL com o Mediator

Enviado: 24 Abr 2009 13:09
por sygecom
Olá Janio,
Já deu uma olhada nesse link:
http://www.otc.pl/download/files_en/mmy ... ALL_EN.TXT