Página 1 de 1

mediator postgresql

Enviado: 18 Nov 2006 02:46
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

Enviado: 19 Nov 2006 00:54
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.

Enviado: 19 Nov 2006 12:21
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...

Enviado: 19 Nov 2006 12:37
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.

Enviado: 24 Nov 2006 16:13
por Leandro2C
Vagner, não achei na pasta Contrib do Xharbour. É alguma versão especial? Obrigado.

Leandro
São Lourenço - MG

Enviado: 24 Nov 2006 18:49
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.