mediator postgresql

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
zazibr
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 11 Set 2004 17:07
Localização: Campo Grande/MS

mediator postgresql

Mensagem por zazibr »

ola pessoal

alguem ja usou esse rdd p/ postgresql ?


o banco de dados ja esta criado e com todas as tabelas ....tudo criado via pgadmin

ativei o OTC MEDIATOR SERVER 4.2.3.3a for postgresql

adicionei as seguintes lib´s ao meu arquivo.bc

cmnnet32.lib
medntx.lib
medntxmt.lib


e o arquivo noautlog.obj p/ nao mostrar a tela de login

é possivel acessar um banco de dados ja criado ?


esta me dando o seguinte erro
Error SRV/1401 Server Error (LOG_FAIXA_UF: No table) : ChkRspErr


segue o codigo do teste
================
#include "mediator.ch"


#include 'inkey.ch'

#Define _HEADSEP_ Chr( 196 ) + Chr( 194 ) + Chr( 196 )
#Define _COLSEP_ " " + Chr( 179 ) + " "
#Define _FOOTSEP_ Chr( 196 ) + Chr( 193 ) + Chr( 196 )
#Define _ENTER_ Chr( 17 ) + Chr( 205 ) + Chr( 188 )




*****
function main()
*****
Local olog_faixa_uf
Local oColuna1 , oColuna2
Local lMonta := .T.
Local nTecla

Local nConectado

Local cC_Msg := "R/W,R/W"
Local cC_Gets := "W/B,B/W+,,,W/N"
Local cC_Padrao := "b/W*,W/B+,N/N,R/W*,W+/B,B/BG,R/W*,W/B+"
Local cC_Tbrowse := "W/B,B/W*,N/N,N/N,W/N,B/BG,R/W,B/R"

set cursor off
set date british
set century on
SET DECIMALS TO 16
SET AUTOPEN ON
SET AUTORDER TO 1


request medntx
request dbfcdx
request dbfntx

RddSetDefault("MEDNTX")


setMode( 25, 80 )
CLS

@ 10,10 Say "Conectando ao Banco de dados ---> Dne2003"

*********
nConectado := MedLogin("", "127.0.0.1","19C8","daniel","daniel","dne2003" )


if nConectado <> 0
Alert( 'Problema para se logar ao servidor' + Str( nConectado , 10 ) )
__Quit()
Else
Alert( "Conectado ao Dne2003" )
endif

*

use "log_faixa_uf" new shared

log_faixa_uf->( DbGoTop() )

While .T.
If lMonta
lMonta := .F.

SetColor( cC_TBrowse )
DispBox( 00,00,MaxRow()-1,MaxCol(), Space( 9 ) )
@ 00 ,01 Say Padr( " SqlLib, CEP (PostgreSql) - Estados " , MaxCol()-1 ) Color cC_Padrao
@ MaxRow()-2,01 Say Padc( "Teclas [" + Chr( 27 ) +;
Chr( 18 ) +;
Chr( 26 ) +;
_ENTER_ + "]" , MaxCol()-1 ) Color cC_Padrao



olog_faixa_uf:= TbrowseDb( 02,01,MaxRow()-3 ,MaxCol()-1 )
olog_faixa_uf:headSep := _HEADSEP_
olog_faixa_uf:colSep := _COLSEP_
olog_faixa_uf:footsep := _FOOTSEP_

oColuna1:= TbColumnNew( "Estado" , {|| log_faixa_uf->ufe_sg })
oColuna2:= TbColumnNew( "Nome do Estado" , {|| hb_AnsiToOem( log_faixa_uf->ufe_no ) })

olog_faixa_uf: AddColumn( oColuna1 )
olog_faixa_uf: AddColumn( oColuna2 )
oColuna2:Width:= 40


EndIf

While !(olog_faixa_uf:stabilize()) ; Enddo

If olog_faixa_uf:hitTop .Or. olog_faixa_uf:hitBottom
Tone(115, 0)
EndIf

Tb_BarraLuminosa( olog_faixa_uf, "on" )

nTecla := Inkey(0)

Tb_BarraLuminosa( olog_faixa_uf, "off" )

If !( Mov_Tb( olog_faixa_uf , nTecla ) )
Exit
EndIf


End

Cls
Set Cursor on
DbCloseAll()
return nil


****
Function Mov_Tb( oBjeto , nTecla )
****
Local lRetorna := .T.

If nTecla == K_UP
Objeto:up()
Elseif nTecla == K_DOWN
Objeto:down()
Elseif nTecla == K_LEFT
Objeto:left()
Elseif nTecla == K_RIGHT
Objeto:right()
Elseif nTecla == K_HOME
Objeto:home()
Elseif nTecla == K_END
Objeto:end()
Elseif nTecla == K_PGUP
Objeto:pageUp()
Elseif nTecla == K_PGDN
Objeto:pageDown()
Elseif nTecla == K_CTRL_PGUP
Objeto:gotop()
Elseif nTecla == K_CTRL_PGDN
Objeto:gobottom()
Elseif nTecla == K_CTRL_HOME
Objeto:panhome()
Elseif nTecla == K_CTRL_END
Objeto:panend()
Elseif nTecla == K_ESC
lRetorna := .F.
Endif

Return lRetorna


****
Function Tb_BarraLuminosa( oBrowse , cStatus )
****
cStatus := Upper( cStatus )
*********
If cStatus = "ON"
oBrowse:ColorRect( { oBrowse:RowPos, oBrowse:LeftVisible ,;
oBrowse:RowPos, oBrowse:RightVisible } , { 2 , 1 } )

ElseIf cStatus = "OFF"
oBrowse:ColorRect( { oBrowse:RowPos, oBrowse:LeftVisible ,;
oBrowse:RowPos, oBrowse:RightVisible } , { 1 , 2 } )

EndIf
***********
Return Nil
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Ola amigo,

Nunca usei, eu sempre uso postgres acessando diretamente pela classe para postgres, é muito mais rapido do que qualquer RDD, tem os comandos bem comuns aos que já usamos, mas é mais trabalhoso de usar quando não se tem conhecimento de banco relacional.

Outra solução que usei e achei muito interessante, são os USRRDD que são RDDs que podem ser criadas pelo proprio usuario, o xHarbou já tem RDDs deste tipo para MySQL, Postgres, Arrays, Texto, etc, e vc pode mudar, implementar e até criar a sua propria RDD, não aceita todos os comandos, como no caso de indices e tal, porem o uso é um pouco diferente, vc dá o comando use em uma clausula SQL, mais ou menos assim

Código: Selecionar todos

use "select * from cleintes" new alias CLIENTES
browse()
É muito legal, vc já dá o use na clausula e a partir dai usa os comandos comuns, SKIP, REPLACE, etc... mechendo o minimo no codigo fonte.

Vale testar pois é muito fácil de usar e já tá com os fontes.
Sem mais
Wagner Nunes
www.vagucs.com.br
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Olá,

O erro pode estar ocorrendo porque o Mediaor, acredito que para manter compatibilidade com o Clipper, não entende tabelas com nomes maiores de 8 caracteres. Da uma olhadinha pelo console do mysql se a tabela foi criada com este nome mesmo, se for tenta diminuir. No utilitário DBF2MED para MySQL por exemplo, mesmo que você coloque um DBF com nome grande, ele da um trim para 8, sempre.

Eu já tive este problema e quando diminui o nome para 12 caracteres funcionou, mas também ja vi dar problema com com mais de 8.

Bom, pode não ser isso, mas não custa tentar, no caso aí o erro é que a tabela não existe, e uma causa pode ser o nome.

Quanto a esta sintaxe citada pelo Wagner, o Mediator também ja implementa algo semelhante, fazendo a consulta já diretamente no USE, e fica bom.

Código: Selecionar todos

USE query AS "select nome from clientes where cod=1" new
//é bem melhor que:
USE clientes INDEX indice new
seek 1
E usar as classes sem o RDD é melhor mesmo. Principalmente pelo fato de o mediator ser proprietário e quando soltarem uma versão nova do xHarbour você vai ficar amarrado na antiga, até que eles recompilem. Isso se não passarem a cobrar.

É a vida...
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

A vantagem do USRRDD é que é parte integrante do xharbour, fácil de usar e vai acompanhar as versões do mesmo. Na pasta contrib do xHARBOUR tem os fontes e exemplos.
Sem mais
Wagner Nunes
www.vagucs.com.br
Leandro2C
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 04 Jan 2006 11:06

Mensagem por Leandro2C »

Vagner, não achei na pasta Contrib do Xharbour. É alguma versão especial? Obrigado.

Leandro
São Lourenço - MG
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

em www.xharbour.org entre no link "developer" baixe o CVS e configure como mostra no site, vai baixar os ultimos fontes do xharbour, é sempre bom ter no seu micro todos os fontes, é a melhor fonte de estudos para ele.
Sem mais
Wagner Nunes
www.vagucs.com.br
Responder