janio escreveu:Ainda não tentei, porque não tive tempo pra nada.
A correria tá grande de +.
Jânio
Que dureza...
Pois bem , amigos ! A dias venho tentando desenvolver um relatório que seja gerado com MT , porem venho tendo o seguinte erro
hb_cdxIndexLockread: lock failure(*) erro 9170
Ao iniciar a MT e voltar para meu "browse" ele fica louco como se os indices estivessem corrompidos.
1- Apos copiar todo o DB abro o temp.dbf em uma nova area
então não mexe na area do browse()
Ps: IMPORTANTE
"Se deixar a thread ser concluida sem mexer em nada , o sistema funciona normalmente e não da esses erros estranhos de browse maluco e nem o erro sitado acima
func main()
select A
user cadmaq Shared via "dbfcdx";
index xmaquinas
browse()
thr:=StartThread("imprime")
*_____________________imprimir
func imprime()
dbcopstruct("temp.dbf")
copy to temp
Select B //abro em uma nova area
use temp VIA "DBFCDX"
dbgotop()
**Rotina de impressão
Close B
return(.t.)
Eder, vc deve abrir o mesmo DBF nas duas function, com alias diferente sendo que a primeira vc pode abrir como READONLY e a segunda func vai ser a que vai registrar nos dbf, claro que a primeir a func deve ter um dispositivo de dar um refresh no DBF.
sygecom escreveu:Eder, vc deve abrir o mesmo DBF nas duas function, com alias diferente sendo que a primeira vc pode abrir como READONLY e a segunda func vai ser a que vai registrar nos dbf, claro que a primeir a func deve ter um dispositivo de dar um refresh no DBF.
Leo , é o contrario , quem vai abrir como readonly é o segundo .DBF pois irei continuar usando o primeiro enquanto o relatorio é processador no segundo
Tentei abrir o mesmo DBF em outra area e da erro "dbf in use "
Eder, veja bem, o primeiro vai apenas visualizar o que o segundo vai esta acresentando , ou seja o primeiro abre como READONLY e o segundo como SHARED para poder gravar, mostre como vc tentou abrir.....não pode usar o mesmo alias.
Uma pergunta: alguém um dia já fez algo semelhante (duplo acesso) com sucesso? Se não, outra pergunta: o RDD do xHarbour é thread safe? Se não, pode ser esse o problema.
Exemplo simples, pra quem não entendeu: na VCL da Borland, quando se quer fazer coisa semelhante com um SGBD qualquer, não se deve usar a mesma conexão para o duplo acesso. Uma thread extra sempre requer uma conexão exclusiva. Senão, é pau na certa. Isso porque, numa conexão única, as threads devem concorrer pelo mesmo recurso usando o mesmo espaço de nomes, e tudo acaba virando uma salada.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!