Página 1 de 1

Warning W0001 Ambiguous reference

Enviado: 24 Dez 2014 10:59
por Fernando queiroz
não estou conseguindo resolver esse problema, durante a compilação dá essa advertência e o aplicativo é criado mas nao carrega quando executa, mesmo
mudando de -w3 para -w0 ou até mesmo removendo

Código: Selecionar todos

C:\SGCWIN>hbmk2 SGC.HBP
uic 5.4.0
Harbour 3.2.0dev (r1410211457)
Copyright (c) 1999-2014, http://harbour-project.org/
Compiling 'SGCWIN.PRG'...
Lines 530, Functions/Procedures 1
Generating C source output to 'C:\Users\FERNANDO\AppData\Loc
dir\SGCWIN.c'... Done.
Compiling 'SGCARQ.PRG'...
SGCARQ.PRG(62) Warning W0001  Ambiguous reference 'DATCAI'
SGCARQ.PRG(62) Warning W0001  Ambiguous reference 'TURCAI'
o fonte onde o erro ocorre é:

Código: Selecionar todos

FUNCTION ABRE_CAIXA
**********************************
LOCAL ARQCAI, BANCO:= {}

IF LEN(M->CAIXA_) > 0
   ARQCAI:="DATABASE\CAIXA"+M->CAIXA_
ELSE
   ARQCAI:="DATABASE\CAIXA"
END
IF FILE(ARQCAI+".DBF")
  USE (ARQCAI) NEW SHARED ALIAS CAIXA
ELSE
  
  AADD(BANCO, {"DATCAI","D",08,0})       &&
  AADD(BANCO, {"TURCAI","N",02,0})       && CHAVE DO ARQUIVO
  AADD(BANCO, {"VALINI","N",14,2})
  AADD(BANCO, {"DINHEI","N",14,2})
  AADD(BANCO, {"CHEQUE","N",14,2})
  AADD(BANCO, {"PREDAT","N",14,2})
  AADD(BANCO, {"CARTAO","N",14,2})  
  AADD(BANCO, {"CONVEN","N",14,2})  
  AADD(BANCO, {"FATURA","N",14,2})  
  AADD(BANCO, {"VENCIDO","N",14,2})  
  AADD(BANCO, {"TELEVEN","N",14,2})  
  AADD(BANCO, {"DINHEI_FI","N",14,2})
  AADD(BANCO, {"CHEQUE_FI","N",14,2})
  AADD(BANCO, {"PREDAT_FI","N",14,2})
  AADD(BANCO, {"CARTAO_FI","N",14,2})  
  AADD(BANCO, {"CONVEN_FI","N",14,2})  
  AADD(BANCO, {"FATURA_FI","N",14,2})
  AADD(BANCO, {"DESCON_FI","N",14,2})    
  AADD(BANCO, {"CONS_INT","N",14,2})  
  AADD(BANCO, {"TRANS_FIL","N",14,2})  
  AADD(BANCO, {"DEVPRO","N",14,2})  
  AADD(BANCO, {"RECDIV","N",14,2})  
  AADD(BANCO, {"PAGDIV","N",14,2})  
  AADD(BANCO, {"DESCON","N",14,2})  
  AADD(BANCO, {"STACAI","L",01,0})
  AADD(BANCO, {"TOTCUS","N",14,2})
  AADD(BANCO, {"TOTLUC","N",14,2})
  AADD(BANCO, {"REIMPR","N",03,0})    && REIMPRESSOES NO DIA
  AADD(BANCO, {"ORCAME","N",03,0})    && ORCAMENTOS FEITOS NO DIA
  AADD(BANCO, {"CANCEL","N",03,0})    && CANCELAMENTOS FEITOS NO DIA
  AADD(BANCO, {"VENDAS","N",05,0})    && VENDAS FEITAS NO DIA

  DBCREATE((ARQCAI),BANCO)
  USE (ARQCAI) NEW SHARED ALIAS CAIXA 
END
IF NETERR()
   ALERT( "Acesso mal sucedido ao arquivo CAIXA")
   RETURN .F.
END
IF FILE((ARQCAI)+".001")
  SET INDEX TO ((ARQCAI)+".001")
ELSE
  USE (ARQCAI) EXCLUSIVE
  IF NETERR()
      ALERT( "Acesso mal sucedido ao arquivo CAIXA" )
      RETURN .F.
  END
  PACK
  index on DTOS(DATCAI)+STRZERO(TURCAI,2,0) to (ARQCAI)+".001"    //   ******linha onde o erro ocorre******
  DBCLOSEAREA()
  USE (ARQCAI) NEW SHARED ALIAS CAIXA 
  IF NETERR()
     ALERT( "Acesso mal sucedido ao arquivo CAIXA" )
     RETURN .F.
  END
  SET INDEX TO ((ARQCAI)+".001")
END     

RETURN .T.
o erro esta nesta linha 00062 index on DTOS(DATCAI)+STRZERO(TURCAI,2,0) to (ARQCAI)+".001"

Warning W0001 Ambiguous reference

Enviado: 24 Dez 2014 13:37
por JoséQuintas
Algumas opções:

1) Use o alias, se for sempre o mesmo

Código: Selecionar todos

use caixa
index on dtos( caixa->campo ) TO indice
2) Use o indicador "genérico" de campo de arquivo (field)

Código: Selecionar todos

use caixa
index on Dtos( field->Campo ) TO indice
3) Declare no início do fonte, fora das procedures/functions, se usar em mais de uma procedure/function dentro do mesmo fonte.

Código: Selecionar todos

FIELDS campo1, campo2, campo3
4) Declare dentro da procedure/function

Código: Selecionar todos

FIELDS campo1, campo2, campo3
5) Desative "tolerância zero"
-w0
-es0

Warning W0001 Ambiguous reference

Enviado: 24 Dez 2014 17:34
por Fernando queiroz
Obrigado Quintas , era isso mesmo, fiz as mudanças e passou certinho