INDEXAR EM REDE : ERRO - WORKAREA NOT IN USE: __DBPACK

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

INDEXAR EM REDE : ERRO - WORKAREA NOT IN USE: __DBPACK

Mensagem por ERCS123 »

Estou alterando minha rotina de criacao de indices, para funcionar agora em rede. A função que estou usando, eu achei aqui no forum, mas não estou conseguindo por em pratica.

Peço ajuda de voces. Obrigado!

EWERTON

Código: Selecionar todos

 function indice()

 
   MENS(" ATENCAO: TODOS OS USUARIOS DEVEM SAIR DO PROGRAMA")
   TONE(900,9)  
   TONE(900,7)  
   TONE(900,9)  
   INKEY(0)
   mens("DESEJA REALMENTE CONTINUAR? (S/N)?")
   setcolor("b/b,B/B")
   Cresp=space(1)
   @ 23,78 get Cresp pict "@!" valid Cresp $ "SN"
   read 
   If Cresp ="S"

    save screen to index
    dbcloseall()
     valor:=0
    ultimo:=171
    termoh(valor)
    t:=0
    c:=0


     if inlock("clientes.dbf")
        alert("Arquivo travado")
     else
        use clientes exclusive 
        pack                         //ERRO AQUI
        index on cod to ind_cod
         mens("Indexando Arquivo 001 - Clientes")
         valor=(++c)*100/ultimo 
         termoh(valor)
         index on left(emp,10) to ind_emp
         mens("Indexando Arquivo 002 - Clientes")
         valor=(++c)*100/ultimo
          termoh(valor)
     endif

      if inlock("fornecedor.dbf")
         alert("arquivo travado")
      else 
             use fornecedor excl 
              pack
	 index on codi to ind_codi 
	 mens("Indexando Arquivo 001 - Fornecedores")
	 valor=(++c)*100/ultimo
	 termoh(valor)
	 index on left(emp1,10) to ind_emp1
	 mens("Indexando Arquivo 002 - Fornecedores")
	 valor=(++c)*100/ultimo
	 termoh(valor)
      endif

        etc
        etc


 
     dbcloseall()
     restore screen from index                   
  endif  

  If Cresp ="N" 
      MENS("OPERACAO FOI CANCELADA ! ")
      RETURN
  endif
return 
*-----------------------------------------------------------------------------*
* PROGRAMA_____: TERMOH()
* FUNCAO_______: MOSTRA BARRA DE PORCENTAGEM P/ INDEXACAO DOS INDICES 
* DATA_________: 
* AUTOR________: EWERTON RODRIGO CARDOSO DA SILVA
*-----------------------------------------------------------------------------*
function termoh(valor)
IF valor <=1
setcolor("w+/r")  
   @ 13,11 SAY "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ   %"
else               
   setcolor("n/r")  
   @ 13,10 say replicate(chr(219),valor/2)
   setcolor("w+/r")
   @ 13,60 say valor pict "999"
endif
return 
*-----------------------------------------------------------------------------*
* PROGRAMA_____: TERMAL()
* FUNCAO_______: MOSTRA BARRA DE PORCENTAGEM P/ RELATORIOS EM GERAL
* DATA_________: 
* AUTOR________: EWERTON RODRIGO CARDOSO DA SILVA
*-----------------------------------------------------------------------------*
function termal(valor)
IF valor <=1
setcolor("w+/r")  
   @ 23,14 SAY "ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ   %"
else               
   setcolor("b/r")//  ("n/r")  
   @ 23,13 say replicate(chr(219),valor/2)
   setcolor("w+/r")
   @ 23,63 say valor pict "999"
endif
return 


**------------------------------------------------------------------
 function inlock(dbf)

 ldbf:=fopen(dbf,1)
 if ferror() <> 0
   return .t.
 endif
 fclose(lbdf)
 return .f.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Não acha mais conveniente indexar por demanda?
[]'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!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Ewerton, na ultima função aquela chamada "function inlock(dbf)" está abrindo o DBF como se fosse um arquivo de texto qualquer, evidentemente que isto impede que você o abra com o comando USE clientes EXCLUSIVE. Tire fora essa função INLOCK e remova os IF/ENDIF decorrente disso.

Em seu lugar após o USE CLIENTES EXCLUSIVE, coloque:

Código: Selecionar todos

IF NETERR()>0
   @ 24,00 SAY PADC("Arquivo CLIENTES não pode ser aberto em modo exclusivo",80) COLOR "N/W"
   INKEY(0)
   RETURN
ENDIF
PACK
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Pablo, acho que fiz alguma coisa errada:

ERRO: Argument error: >

Código: Selecionar todos


        use clientes exclusive
     if neterr()>0         
         alert("Arquivo nao pode ser aberto") 
         return
     endif
         pack                         
        index on cod to ind_cod 
         mens("Indexando Arquivo 001 - Clientes") 
         valor=(++c)*100/ultimo 
         termoh(valor) 
         index on left(emp,10) to ind_emp 
         mens("Indexando Arquivo 002 - Clientes") 
         valor=(++c)*100/ultimo 
          termoh(valor) 
        etc 
        etc 
 


Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Perdão, eu que dei a sintaxe errada do NETERR(). Esta função retorna verdadeira ou falsa (não numérica. Mude para IF NETERR() que vai funcionar. Sorry
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
ERCS123
Usuário Nível 2
Usuário Nível 2
Mensagens: 95
Registrado em: 28 Jul 2007 19:54
Localização: franca

Mensagem por ERCS123 »

Pablo, agora deu certo......Muito obrigado novamente.

Ewerton
Responder