Página 1 de 1

Bug dbunlock SQLRDD

Enviado: 07 Mai 2010 09:55
por jeferson_c
Gente não sei se vocês já passaram pelo mesmo problema que encontrei ou se existe algum tipo de configuração do harbour para corrigir tal problema,
o que anda acontecendo comigo é o seguinte quando eu bloqueio um determinado registro em uma estação ele fica bloqueado mas se eu desbloqueio um registro de uma outra tabela ele também é desbloqueado, eu montei uma rotina de teste e pude constatar que ao utilizar em DBF este problema não ocorre, apenas no quando utilizo banco de dados, estou utilizando Postgress, acredito que a unica maneira de corrigir este problema seria seja utilizar um bloco de transação mais isto implicaria em ter que verificar uma rotina gigantesca que possuo hoje, pois eu precisaria retirar o commit e unlock de todas as tabelas que possuo.

Código: Selecionar todos

#include "sqlrdd.ch"
#define SQL_DBMS_NAME                       17
#define SQL_DBMS_VER                        18
request sqlrdd
REQUEST SR_PGS             
#include 'pgs.ch'     

**
*
request hb_nomouse  // desativa o mouse
request dbfcdx
request dtos
*
FUNCTION MAIN(cDriver)
clear
clear typeahead
setcolor('w/n,w+/n')
Set AutOpen ON
if cDriver == nil
   ? 'PARAMETRO NAO ESPECIFICADO [DBFCDX,SQLRDD]'
   return .t.
endif

cDriver := upper(cDriver)

** conecta no banco de dados
if cDriver=='SQLRDD' .AND. !Connect()
   return .t.
end


use orcament alias orcament shared new via cDriver
use orc_prod alias orc_prod shared new via cDriver

cls
? ' orcament  tentando bloquear o registro : ',orcament->(recno())
while orcament->(!rlock())

end

? ' orc_prod  tentando bloquear o registro : ',orc_prod->(recno())

while orc_prod->(!rlock())

end

? 'registros bloqueados'
? 'orcament->'+valtoprg(orcament->(recno()))
? 'orc_prod->'+valtoprg(orc_prod->(recno()))

alert('desbloqueando orc_prod')
orc_prod->(dbunlock())
alert('desbloqueado orc_prod;;'+;
         'orc_prod' +sr_showvector( orc_prod->(dbRLockList()) )+';;'+;
         'orcament' +sr_showvector( orcament->(dbRLockList()) ))

dbcloseall()

return .t.
/*****************************************************************************/
FUNCTION CONNECT(cDatabase)
cConnString := 'pgs=128.1.1.251;uid=postgres;dtb=filial012;pwd=postgres'
nDetected   := DetectDBFromDSN(cConnString)
if nDetected > SYSTEMID_UNKNOW
   **@ 24,00 say 'Conectando a ' + cConnString + '...'
   nCnn := SR_AddConnection(nDetected,cConnString)
end
*
* Retorna "connection handle" ou -1 se falhar
if nCnn < 0
   @ 24,00 say 'Erro de conexao !!! Veja "sqlerror.log" para detalhes...'
   quit
end
**@ 24,00 say space(80)
return .t.
Observação estou utilizando o xHarbour comercial de novembro de 2009

Re: Bug dbunlock SQLRDD

Enviado: 10 Mai 2010 23:29
por sygecom
Olá Jeferson,
Seja Bem vindo ao Fórum.

Na duvida fiz um teste aqui no meu sistema mesmo para ver se acontecia isso aqui e isso não aconteceu, estou usando Postgresql 8.4.1 + SQLRDD For Bcc + xHarbour 1.2.1.

Já tentou enviar para o Marcelo esse exemplo ?

Ou tente postar um exemplo que qualquer um possa compilar e já sair rodando, o seu exemplo falta as tabelas.

Re: Bug dbunlock SQLRDD

Enviado: 11 Mai 2010 08:21
por jeferson_c
Obrigado sygecom, só uma dúvida você rodou a aplicanção em duas maquinas, se sim beleza então terei que verificar pois deve ter alguma configuração do SQLRDD para resovler isso.

Re: Bug dbunlock SQLRDD

Enviado: 11 Mai 2010 11:21
por sygecom
Fiz no mesmo micro, em um aplicativo com telas MDI e usando areas separadas para cada tela MDI.

Re: Bug dbunlock SQLRDD

Enviado: 11 Mai 2010 13:34
por jeferson_c
É o mesmo teste que andei executando, deve ser algum tipo de configuração do SQLRDD, valeu por testar, vou entrar em contato com o Marcelo.

Re: Bug dbunlock SQLRDD

Enviado: 12 Mai 2010 09:43
por jeferson_c
Olá sygecom, eu falei com o Luiz do xharbour ele me disse que é uma configuração do banco, porêm eu testei algumas e não obtive sucesso, eu achava que fosse o seguinte parametro deadlock_timeout, teria como você me enviar a configuração do seu postgres para que eu pudesse verificar onde pode estar errado no meu banco de dados?

Re: Bug dbunlock SQLRDD

Enviado: 12 Mai 2010 16:05
por sygecom
O Teste que fiz foi no meu micro, e aqui apenas baixei o Postgresql 8.4.1 e instalei e deixei tudo como padrão ou seja não mudei uma linha no postgresql.conf

Bug dbunlock SQLRDD

Enviado: 08 Nov 2012 10:56
por rdgmoreno
Sei que o tópico é antigo, mas conseguiram resolver o problema do dbunlock() liberar os registros de outra tabela?

Estou com este problema e não encontrei uma solução.

No DBF funciona certinho, mas usando a SQLRDD no postgres não funciona... já tentei dbunlock() dbrunlock(recno()) unlock, ... e todos liberar os registros travados de outras tabelas.

Bug dbunlock SQLRDD

Enviado: 26 Dez 2012 20:18
por sygecom
Olá Rodrigo,
Resolveu o caso ?
Eu não sei se tem haver com alguma versão do SQLRDD, mas minha versão é de 2010 e não acontece esse problema.