Página 2 de 2

Enviado: 26 Fev 2008 11:55
por ederxc
janio escreveu:
Grande Eolo,

Estou precisando exatamente desse negócio para ir exibindo um relatório em TXT antes de este estar concluso.

Vc pode passar o caminho das pedras??

Jânio
Janio conseguil fazer alguma coisa , estou pelando pra fazer ...

té++ :f

Enviado: 26 Fev 2008 12:08
por janio
Ainda não tentei, porque não tive tempo pra nada.

A correria tá grande de +.

Jânio

Enviado: 26 Fev 2008 15:40
por ederxc
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



Código: Selecionar todos

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.)

Enviado: 27 Fev 2008 13:49
por sygecom
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.

Enviado: 27 Fev 2008 16:19
por ederxc
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 "

Enviado: 27 Fev 2008 20:54
por sygecom
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.

Enviado: 27 Fev 2008 21:07
por Maligno
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.