tenho um programa feito em Clipper que faz uma consulta em várias tabelas diferentes e depois gera um arquivo TXT.. ele funcionava perfeitamente,
só que de uns dias pra cá ele vem dando esse erro "error base/1132 bound error:AADD" eu estou ciente que é ocasionado devido ao "estouro" da matriz,
irei postar o código aqui, será que alguém poderia me ajudar a resolver isso se é que é possível?!
obs: eu não entendo muito da linguagem e o código está meio bagunçado mesmo.
Código: Selecionar todos
// Listar todos os processos do desembaracados no mês
//
// Processo Registro Data Valor Armaz. Valor Cif Armazem
// Desembaraco (R$) (R$)
// XXXXXXXXXXXXXXX 999999-9 99/99/99 999.999,99 999.999,99 XXXXXXXX
//
// OUTRAS DESPESAS .: VERIFICA A DATA DO FATURAMENTO
// (RIREGI->DT_FATURA) e busca no MENSAL (mesmo ANO e MES do DT_FATURA)
// Busca o registro e soma todos os valores com FM001 >= 194 ou
// ( FM001 >= 211 e <= 306) ou FM001 = 360
//
//
#include "inkey.ch"
Function planilha()
local lOK := .t.
Local cREFERENCIA := ""
Local cVISTORIA := ""
Local cAGENTE := ""
Local cNRTG := ""
Local cNFE := ""
Local aVETOR :={}
Local cREG := ""
Local cCLIENTE := "0586"
Local dDOCSLI := ctod(space(8))
Local dEMISLI := ctod(space(8))
Local cNRLI := ""
Local cGREENL := ""
Local dNFEREC := ctod(space(8))
Local dPROTANV:= ctod(space(8))
Local dCOA := ctod(space(8))
Local dDATATG := ctod(space(8))
Local dPROTG := ctod(space(8))
Local dSOLIC := ctod(space(8))
Local dRECEB := ctod(space(8))
Local dLIBERADO := ctod(space(8))
Local cARMAZ := ""
Private DIVISAO := 4
Private cANO := ""
Private cMES := ""
//variaveis de tela de GET
Set Date brit
Set epoch to 1980
Set Dele on
cls
@ 01,01 say 'Gerando arquivo, aguarde...'
set cons off
set prin on
set prin to "zp.txt"
Use F:\SISCEX\RIREGI New Shared
index on IMPORTADOR+REFERENCIA to "tmpy.ntx"
Use f:\siscex\RIREGF new shared
Set index to f:\siscex\riregf
Use f:\siscex\RIADIC new shared
Set index to f:\siscex\riadic
Use f:\siscex\RIITEM new shared
Set index to f:\siscex\riitem
Use f:\siscex\LIREGI new shared
index on left(REFERENCIA,6) to APAGA01
Use f:\siscex\rireg3 alias DOCS new shared
index on REGISTRO to "tmpx.ntx"
if RIREGI->(dbseek(cCLIENTE))
while ! RIREGI->(eof()) .and.;
left(RIREGI->IMPORTADOR,4) == "0586"
dEMISLI := ctod(space(8))
if LIREGI->(dbseek(RIREGI->(left(REGISTRO,6)) ) )
dEMISLI := LIREGI->DATA
cREG := left(RIREGI->REGISTRO,6)
endif
if RIREGI->CANAL == "1"
cCANAL := "VERDE "
elseif RIREGI->CANAL == "2"
cCANAL := "AMARELO "
elseif RIREGI->CANAL == "3"
cCANAL := "VERMELHO "
elseif RIREGI->CANAL == "4"
cCANAL := "CINZA "
else
cCANAL := " "
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "EMBARQUE AUTORIZADO EM " $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cGREENL := ""
if left(RIREGF->REGISTRO, 6) == cREG
cGREENL := substr(RIREGF->FRASE, 22, 8)
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "LI 1" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cNRLI := ""
if left(RIREGF->REGISTRO, 6) == cREG
cNRLI := substr(RIREGF->FRASE, 3, 13)
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "MERCADORIA NO" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cARMAZ := ""
if left(RIREGF->REGISTRO, 6) == cREG
cARMAZ := substr(RIREGF->FRASE, 15, 20)
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "LI DEFERIDA P/DPF EM" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cGREENL := ""
if left(RIREGF->REGISTRO, 6) == cREG
cGREENL := substr(RIREGF->FRASE, 21, 6)
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "NOTA FISCAL ELETRONICA RECEBIDA" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dNFEREC := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dNFEREC := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "PROTOCOLO ANVISA OK" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dPROTANV := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dPROTANV := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "INSPECAO PREVISTA PARA" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cVISTORIA := ""
if left(RIREGF->REGISTRO, 6) == cREG
cVISTORIA := substr(RIREGF->FRASE, 23, 7)
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "INSPECAO ANVISA PREVISTA P/" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
if left(RIREGF->REGISTRO, 6) == cREG
cVISTORIA := substr(RIREGF->FRASE, 28, 7)
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "AGENTE DE CARGA:" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cAGENTE := ""
if left(RIREGF->REGISTRO, 6) == cREG
cAGENTE := substr(RIREGF->FRASE, 17, 15)
endif
endif
cFATCOM = ""
if DOCS->(dbseek(RIREGI->REGISTRO))
do while DOCS->REGISTRO == RIREGI->REGISTRO
if DOCS->TIPO == "01"
cFATCOM += alltrim(DOCS->NUMERO)
cFATCOM += " "
endif
DOCS->(dbskip())
enddo
endif
cDATAFATURA := ""
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "DOCS P/BAIXA TG" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cNRTG := ""
if left(RIREGF->REGISTRO, 6) == cREG
cNRTG := substr(RIREGF->FRASE, 17, 3)
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "CERT.ANALISE ASSINADO RESP.TEC.REC" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dCOA := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dCOA := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "DOCS P/BAIXA TG" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dDATATG := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dDATATG := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "PROTOCOLO P/BAIXA TG" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dPROTG := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dPROTG := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "TERMO GUARDA ORIG" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dLIBERADO := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dLIBERADO := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "SOLICITADO TERMO DE GUARDA" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dSOLIC := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dSOLIC := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "TERMO DE GUARDA RECEBIDO" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
dRECEB := ctod(space(8))
if left(RIREGF->REGISTRO, 6) == cREG
dRECEB := RIREGF->DATA
endif
endif
if RIREGF->(dbseek(RIREGI->REGISTRO))
while left(RIREGF->REGISTRO, 6) == cREG .and.;
! ( "NFE NR.:" $ RIREGF->FRASE )
RIREGF->(dbskip())
enddo
cNFE := ""
if left(RIREGF->REGISTRO, 6) == cREG
cNFE := substr(RIREGF->FRASE, 9, 5)
endif
endif
RIITEM->(dbseek(RIREGI->REGISTRO))
RIADIC->(dbseek(RIREGI->REGISTRO))
if RIREGI->RSIGLA == "SA"
cTIPO := "MARITIMO"
else
cTIPO := "AEREO"
endif
aadd(aVETOR,{alltrim(RIREGI->(left(REGISTRO,6)+"-"+substr(REGISTRO,7,1))),;
alltrim(RIREGI->REFERENCIA),;
RIREGI->DATAABERT,;
dEMISLI,;
alltrim(cGREENL),;
RIREGI->DESCARGA,;
iif(! empty(alltrim(RIREGI->ARM_NROS)),alltrim(RIREGI->ARM_NROS),cARMAZ),;
dPROTANV,;
alltrim(cVISTORIA),;
RIREGI->DATA_DI,;
alltrim(RIREGI->(left(NR_DI,2)+"/"+substr(NR_DI,3,7)+"-"+substr(NR_DI,10,1))),;
alltrim(cCANAL),;
alltrim(cFATCOM),;
cDATAFATURA,;
dNFEREC,;
RIREGI->DT_DESEMB,;
RIREGI->EMISSAO,;
RIREGI->CHEGADA,;
alltrim(cNRTG),;
dCOA,;
dDATATG,;
dPROTG,;
dLIBERADO,;
RIREGI->HOUSE,;
cTIPO,;
cNFE,;
dSOLIC,;
dRECEB,;
RIREGI->DT_CARREG,;
alltrim(cNRLI),;
cAGENTE } )
RIREGI->(dbskip())
enddo
endif
//Fecha a tabela
RIREGI->(dbclosearea())
RIREGF->(dbclosearea())
LIREGI->(dbclosearea())
DOCS->(dbclosearea())
RIITEM->(dbclosearea())
RIADIC->(dbclosearea())
qout("Levantamento Processos Sanofi Aventis")
qout()
qout("Registro;Referencia;Data Abertura;Prot. LI;Green Light;Remocao;Armazem;Prot. Anvisa;Vistoria;Registro;Nr. DI;Canal;Nr. Fatura;Data Fatura;NFE Rec.;Desembaraco;Embarque;Chegada;NRTG;COA;Data Tg;Protocolo Tg;Liberado;BL/HAWB;Marit./Aereo;NFE;Solicitado;Recebido;Carregamento;Numero LI;Agente")
nCONT := 1
Do while nCONT <= len(aVETOR)
qout(aVETOR[nCONT][1]+";"+;
aVETOR[nCONT][2]+";"+;
iif(! empty(aVETOR[nCONT][3]), dtoc(aVETOR[nCONT][3]),"")+";"+;
iif(! empty(aVETOR[nCONT][4]), dtoc(aVETOR[nCONT][4]),"")+";"+;
aVETOR[nCONT][5]+";"+;
iif(! empty(aVETOR[nCONT][6]), dtoc(aVETOR[nCONT][6]),"")+";"+;
aVETOR[nCONT][7]+";"+;
iif(! empty(aVETOR[nCONT][8]), dtoc(aVETOR[nCONT][8]),"")+";"+;
aVETOR[nCONT][9]+";"+;
iif(! empty(aVETOR[nCONT][10]), dtoc(aVETOR[nCONT][10]),"")+";"+;
aVETOR[nCONT][11]+";"+;
aVETOR[nCONT][12]+";"+;
aVETOR[nCONT][13]+";"+;
aVETOR[nCONT][14]+";"+;
iif(! empty(aVETOR[nCONT][15]), dtoc(aVETOR[nCONT][15]),"")+";"+;
iif(! empty(aVETOR[nCONT][16]), dtoc(aVETOR[nCONT][16]),"")+";"+;
iif(! empty(aVETOR[nCONT][17]), dtoc(aVETOR[nCONT][17]),"")+";"+;
iif(! empty(aVETOR[nCONT][18]), dtoc(aVETOR[nCONT][18]),"")+";"+;
aVETOR[nCONT][19]+";"+;
iif(! empty(aVETOR[nCONT][20]), dtoc(aVETOR[nCONT][20]),"")+";"+;
iif(! empty(aVETOR[nCONT][21]), dtoc(aVETOR[nCONT][21]),"")+";"+;
iif(! empty(aVETOR[nCONT][22]), dtoc(aVETOR[nCONT][22]),"")+";"+;
iif(! empty(aVETOR[nCONT][23]), dtoc(aVETOR[nCONT][23]),"")+";"+;
aVETOR[nCONT][24]+";"+;
aVETOR[nCONT][25]+";"+;
aVETOR[nCONT][26]+";"+;
iif(! empty(aVETOR[nCONT][27]), dtoc(aVETOR[nCONT][27]),"")+";"+;
iif(! empty(aVETOR[nCONT][28]), dtoc(aVETOR[nCONT][28]),"")+";"+;
iif(! empty(aVETOR[nCONT][29]), dtoc(aVETOR[nCONT][29]),"")+";"+;
aVETOR[nCONT][30]+";"+;
aVETOR[nCONT][31] )
nCONT := nCONT +1
if nCONT > len(aVETOR)
// Desvia para o Marcador logo abaixo ...
EXIT
endif
enddo
set prin to
set prin off
set cons on
Retu(Nil)
//
//muito obrigado..
tenham um bom dia.

