Erro da abertura de arquivos

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Erro da abertura de arquivos

Mensagem por leandrolinauer »

:( Caros colegas.
Estive batalhando com o Harbour e GtWVW, e consegui funcionar o programa, mas estou com um problema na abertura de arquivos, tanto em console como em gráfico, horas roda normal horas não, consegui descobrir que é problema na função de abertura de arquivos temporários na função DbUseArea(), eu não consegui descobrir porque o db]]DbUseArea só no temporário não consegue rodar legal, visto que no clipper roda normalmente até hoje, não dando este erro.

Fico muito grato se alguém descobrir a saída deste novelo de lã. ´o)

Abaixo vai as linhas do código:

Esta função abaixo é utilizada logo após a identificaão do usuário.

Código: Selecionar todos


Procedure Seleciona_Caixa
ShowWait(,,"Selecionando Caixas Deste Usu rio...")
NetUseFile("CDOC0300",{"CDOC0300","CDOC0301"},.T.,,,,,,,wD_Instal)
NetUseFile("CDOC0400",{"CDOC0400","CDOC0401"},.T.)
NetUseFile("CDOC1200",{"CDOC1200"},.T.)
If wNetUse=.T.
   Campos:={{"C_OPER" ,"C",03,0},;
            {"C_CAIXA","C",02,0},;
            {"DATA"   ,"D",08,0},;
            {"TICADO" ,"C",01,0}}
   NomeCampos:={{"c_caixa+Abreviate(CDOC0400- nome,30)","data","ShSitCaixa(ticado)"},;
                {"@R 99-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!","@!","@!"},;
                {"Caixa","Data","Situa‡Æo"}}
   File1Tmp:=HoraTmp()

 [b]  OpenTmp(Campos,"C_CAIXA")[/b] //aqui da o erro que chama a função abaixo em negrito OPENTMP

   NetRelFile("CDOC0300","C_OPER")
   NetRelFile("CDOC0400","C_CAIXA")
   waCxA  :=.F.
   waCaixa:=Space(2)
   waData :=Date()
   DbSelectArea("CDOC1200")
   DbSeek(wCOper+"A")
   If(!Found(),DbSeek(wCOper+"M"),.T.)
   wTicado:=TICADO
   If Found().And.SENHA==WSenha
      While !Eof().And.C_OPER==wCOper.And.TICADO==wTicado
        ShowWaitProc()
        (File1Tmp)->(DbAppend())
        (File1Tmp)->C_OPER :=C_OPER
        (File1Tmp)->C_CAIXA:=C_CAIXA
        (File1Tmp)->DATA   :=DATA   
        (File1Tmp)->TICADO :=TICADO
        DbSkip(1)
        If wTicado=="A".And.TICADO#wTicado
           wTicado:="M"
           DbSeek(wCOper+"M")
        EndIf
     End
     DbSelectArea(File1Tmp)
     If LastRec()>=1
        DbGoTop()
        DbBusca(02,00,22,79,"Caixas Em Aberto Com o Usu rio "+RTrim(Abreviate(CDOC0300->NOME,30)),NomeCampos,,"<ENTER> Seleciona o Caixa   <ESC> Abandona Sele‡Æo de Caixa")
     EndIf
     If LastRec()>0.And.LastKey()#27
        waCxA:=.T.
        waCaixa:=C_CAIXA
        waData :=DATA
     ElseIf LastRec()>0.And.LastKey()=27
        waCxA:=.T.
        ShowMessage(,,{"Usu rio, Vocˆ NÆo Selecionou Um Caixa,","Portanto NÆo Poder  Efetuar Recebimentos!"},0)
     EndIf
  EndIf
  CloseTmp()
  CDOC0300->(DbCloseArea())
  CDOC0400->(DbCloseArea())
  CDOC1200->(DbCloseArea())
EndIf
CloseWindow()
wNetUse:=.T.
Return .T.

///////////
[b]função Opentmp[/b]
Procedure OpenTmp(Campos,Chave,Arquivo,Arquivo2,Chave2,Arquivo3,Chave3,aOd)
Private LArquivo:=If(Arquivo=Nil,File1Tmp,Arquivo),LArquivo2:=Arquivo2,LArquivo3:=Arquivo3
aOd:=If(aOd=Nil,"A",aOd)
ShowWait(,,"Abrindo arquivo tempor rio...")
DbCreate(wDir+"&LArquivo.",Campos)
wNetUse:=If(NetErr(),.F.,wNetUse)
If wNetUse=.T.

 [b]  DbUseArea(.T.,,wDir+LArquivo,,.F.,.F.)[/b]  //nesta linha que da erro

   ShowWaitProc()
   wNetUse:=If(NetErr(),.F.,wNetUse)
   If wNetUse=.T. //cria indices
      If(lArquivo #Nil,IndexFile(Chave ,wDir+LArquivo ,aOd),.T.)
      ShowWaitProc()
      If(lArquivo2#Nil,IndexFile(Chave2,wDir+LArquivo2,aOd),.T.)
      ShowWaitProc()
      If(lArquivo3#Nil,IndexFile(Chave3,wDir+LArquivo3,aOd),.T.)
   EndIf
   DbCloseArea()
   DbUseArea(.T.,,wDir+LArquivo,,.F.,.F.)
   ShowWaitProc()
   wNetUse:=If(NetErr(),.F.,wNetUse)
   If wNetUse=.T. //abre indices
      If(lArquivo#Nil,DbSetIndex(wDir+"&LArquivo."+"."+wRDD),.T.)
      ShowWaitProc()
      If(lArquivo2#Nil,DbSetIndex(wDir+"&LArquivo2."+"."+wRDD),.T.)
      ShowWaitProc()
      If(lArquivo3#Nil,DbSetIndex(wDir+"&LArquivo3."+"."+wRDD),.T.)
   EndIf
EndIf
CloseWindow()
Return .T.
Abaixo o error.log

******************************* Error log file ********************************

Date ............: 26/10/2007
Available Memory : 225080
Multi Threading : No
Compiler : Borland C++ 5.5.1
xHarbour Version : xHarbour build 0.99.60 Intl. (SimpLex)

-------------------------- Environmental Information --------------------------

Exact is ........: Off
Fixed is ........: Off
Decimals is at ..: 2
Date Format is ..: DD/MM/YYYY
Epoch is ........: 1900
Path is .........:
Default is ......:
Exclusive is ....: On
SoftSeek is .....: Off
Unique is .......: Off
Deleted is ......: On
Cancel is .......: On
Debug is ........: False
Color is ........: N/W,GR+/N,N/N,N/N,N/W
Cursor is .......: 0
Console is ......: On
Alternate is ....: Off
AltFile is ......:
Device is .......: SCREEN
Printer is ......: False
PrintFile is ....: PRN
Margin is .......: 0
Bell is .........: Off
Confirm is ......: Off
Escape is .......: On
Insert is .......: Off
Intensity is ....: On
Scoreboard is ...: Off
Delimeters is ...: Off
Delimchars is ...: ::
Wrap is .........: On
Message is ......: 0
MCenter is ......: Off

=============================Detailed Work Area Items==============================


++++++++++++++++++++++ Internal Error Handling Information +++++++++++++++++++++++

Subsystem Call ..: BASE
System Code .....: 1003
Default Status ..: False
Description .....: Variable does not exist
Operation .......: CODIGO
Arguments .......:
Involved File ...:
Dos Error Code ..: 0

Trace Through:
----------------
DBUSEAREA : 0 in Module:
OPENTMP : 1,214 in Module: MEGALIB.PRG
SELECIONA_CAIXA : 404 in Module: CDOC0000.PRG
MAIN : 30 in Module: CDOCINI.PRG


################################ Video Screen Dump ################################

|Error BASE/1003 Variable does not exist: CODIGO |
|Error at ...: DBUSEAREA(0) in Module: |
|Called from : OPENTMP(1214) in Module: |
|Called from : SELECIONA_CAIXA(404) in Module: CDOC0000.PRG |
|Called from : MAIN(30) in Module: CDOCINI.PRG
:xau
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Description .....: Variable does not exist
Operation .......: CODIGO
Cade o campo CODIGO ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Erro de abertura

Mensagem por leandrolinauer »

:))
Desculpe a minha falha, peguei o log errado, este erro CODIGO no log ocorreu na identificação aonde tem o campo código.

Creio que ja consegui resolver o problema que ocorre nesta linha que tinha na função OpenTMP e utilizo tbem o mesmo no indexamento dos indices do sistema todo.

DbUseArea(.T.,,wDir+LArquivo,,.F.,.F.) -> na abertura de temporario

E usando da forma abaixo parou de dar o erro, pelo menos por enquanto.

lShared :=If(lShared=Nil,.T.,lShared)
nRetry :=If(nRetry =Nil,10,nRetry)
lNew :=If(lNew =Nil,.T.,lNew)
nExt :=If(nExt =Nil,"DBF",nExt)

DbUseArea(lNew,cDriver,wDir+cArquivo+"."+nExt,Nil,lShared)

Bom, creio eu que pode ser algo do Harbour que não aceitou passar o NULO como vazio entre as virgulas (,,), já colocando valores entre as virgulas (.T.,.F.,Nil) não ocorreu mais o erro.

Pode ser que eu esteja errado, estou analisando ainda o sistema para ver se ocorre o erro.
Grato.

:D
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Menos mal, resolvido !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder