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
mediator postgresql
Moderador: Moderadores
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
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
É 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.
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()
Vale testar pois é muito fácil de usar e já tá com os fontes.
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
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.
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...
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
É 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.
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.
- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
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.

