rclipper Posted January 10, 2007 Report Share Posted January 10, 2007 Amigos apareceu este erro que não entendo: Numerei a linha 1356, para os amigos saber onde dá o erro. Aplicacao ========== Nome e Caminho: C:\SUPERM\SUPERM.EXE Tamanho: 2,299,904 bytes Maximo de arquivos abertos: ( SetHandleCount() ) 250 Ocorreu erro em: 10/01/2007, 23:39:52 Descricao: Erro BASE/1132 Bound error: array access Chamadas ao Stack ================= CHAMADA DE CHKMOVCX(1356) CHAMADA DE (b)MOVCAIXA(99) CHAMADA DE (b)MOVCAIXA(99) CHAMADA DE MOVCAIXA(99) CHAMADA DE (b)MAIN(60) CHAMADA DE TSBUTTON:LBUTTONDOW(1100) CHAMADA DE TSBUTTON:HANDLEEVEN(1007) CHAMADA DE MAIN(111) LOCAL aFormPg := {} LOCAL cDeb, cRcb, cDup, oResDl, lOk, lFecha, oSelect, aFormasPg, aDup, aHav LOCAL nDin, nPg2, nPg3, nPg4, nPg5, nPg6, nPg7, nPg8, nPg9, nOut, nHav, nDvl, nSrv, nTtl, nDeb, nRcb, nDup, nNgo, nIni, nPgo, nCh1, nCh2, nCan STORE 0 TO nDin, nPg2, nPg3, nPg4, nPg5, nPg6, nPg7, nPg8, nPg9, nOut, nHav, nDvl, nSrv, nTtl, nDeb, nRcb, nDup, nNgo, nIni, nPgo, nCh1, nCh2, nCan PUBLIC dIni, dFim, nAten, cAten, cFilt dIni := DATE() dFim := DATE() nAten:= 0 cAten:= SPACE(40) cFilt:= "CAIXA->FECHADO = .F." aFormasPg := {"DINHEIRO", cFpgt2, cFpgt3, cFpgt4, cFpgt5, cFpgt6, cFpgt7, cFpgt8, cFpgt9,"OUTROS"} aDup := {0,0,0,0,0,0,0,0,0,0} aHav := {} lOk := .f. lFecha := .f. oSelect := SELECT() IF nEnHoje = NIL DEFINE DIALOG oResDl RESOURCE "CAIXA_INF" REDEFINE GET oGt1 VAR dIni ID 35 OF oResDl REDEFINE GET oGt2 VAR dFim ID 36 OF oResDl WHEN !EMPTY(DTOS(dIni)) VALID !EMPTY(DTOS(dFim)) REDEFINE GET oGt3 VAR nAten ID 38 OF oResDl VALID CxChkAtd(@nAten,@cAten,oResDl) REDEFINE GET oGt4 VAR cAten ID 39 OF oResDl UPDATE REDEFINE CHECKBOX oCbx VAR lFecha ID 37 OF oResDl WHEN .F. REDEFINE BUTTON oBt1 ID 40 OF oResDl ACTION (lOk := .t., oResDl:End()) REDEFINE BUTTON oBt2 ID 41 OF oResDl ACTION (lOk := .f., oResDl:End()) ACTIVATE DIALOG oResDl CENTERED IF ! lOk RETURN "" ENDIF ENDIF USE SALDOINI SHARED NEW IF ! FILE("SALDOINI.CDX") MsgMeter( { | oMeter, oText, oDlg, lEnd | ; BuildIndex( oMeter, oText, oDlg, @lEnd, "SALDOINI->DATA", "SALDOINI" ) },; "Classificando saldo inicial...", "Espere um momento!" ) ENDIF ordListClear() OrdListAdd("SALDOINI", "SALDOINI") IF SALDOINI->(DBSEEK(dIni)) nIni := SALDOINI->VALR ENDIF CLOSE SALDOINI FERASE(cPasta+"\VNDTMP.CDX") SET SOFTSEEK ON SELECT 2 VENDAS->(DBCLEARFIL(NIL)) VENDAS->(DBSETORDER(3)) VENDAS->(DBSEEK(dIni)) INDEX ON VENDAS->ITEM48 TAG VNDTMP01 TO "VNDTMP" WHILE( VENDAS->ITEM48 >= dIni .AND. VENDAS->ITEM48 <= dFim ) ordListClear() OrdListAdd("VNDTMP", "VNDTMP01") SET SOFTSEEK OFF VENDAS->(DBGOTOP()) cFilt := "VENDAS->ITEM52 = 0" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "VENDAS->ITEM48 >= dIni .AND. VENDAS->ITEM48 <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "VENDAS->ITEM36 = nAten" ENDIF cText := "RESUMO/CAIXA: "+DTOC(dIni)+" A "+DTOC(dFim) + CRLF IF nAten > 0 cText += "ATEND.: "+ALLTRIM(cAten) + CRLF ENDIF IF nIni <> 0 cText += "SALDO INICIAL.............: "+Trans(nIni,"@E 999,999.99")+ CRLF ENDIF cDeb := "" cRcb := "" cDup := "" SET FILTER TO &cFilt VENDAS->(dbGoTop()) IF ! VENDAS->(EOF()) WHILE ! VENDAS->(EOF()) IF ALLTRIM(VENDAS->ITEM10) $ "VENDA A VISTA & VENDA A PRAZO" nDin += VENDAS->ITEM11 nPg2 += VENDAS->ITEM13 nPg3 += VENDAS->ITEM58 nPg4 += VENDAS->ITEM59 nPg5 += VENDAS->ITEM60 nPg6 += VENDAS->ITEM61 nPg7 += VENDAS->ITEM62 nPg8 += VENDAS->ITEM20 nPg9 += VENDAS->ITEM63 nOut += VENDAS->ITEM64 ENDIF IF lFecha IF VENDAS->(RLOCK()) REPLACE VENDAS->ITEM52 WITH 1 VENDAS->(DBUNLOCKALL()) ENDIF ENDIF VENDAS->(DBSKIP(1)) END IF lFecha VENDAS->(DBCOMMITALL()) ENDIF ENDIF // Reabrir vendas para corrigir os Ãndices SELECT 2 CLOSE VENDAS SysRefresh() SELECT 2 USE VENDAS SHARED ordListClear() OrdListAdd("VENDAS", "VENDCODI", "VENDCLIE", "VENDDATA", "VENDNCNT") // PROCESSAR HAVER cFilt := "" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "HAVER->DATA >= dIni .AND. HAVER->DATA <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "HAVER->DATA = nAten" ENDIF // Processando despesas USE DESPESAS SHARED NEW ordListClear() OrdListAdd("DESPESAS", "DESPCODI", "DESPDATA", "DESPDESC") cFilt := "" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "DESPESAS->ITEM02 >= dIni .AND. DESPESAS->ITEM02 <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "DESPESAS->ITEM08 = nAten" ENDIF SET FILTER TO &cFilt DESPESAS->(DBGOTOP()) IF ! DESPESAS->(EOF()) WHILE ! DESPESAS->(EOF()) nDeb += DESPESAS->ITEM05 cDeb += LEFT(DESPESAS->ITEM04,28)+Trans(DESPESAS->ITEM05,"@E 999,999.99")+ CRLF DESPESAS->(DBSKIP(1)) END ENDIF CLOSE DESPESAS // Processando recebimentos USE RECEBIME SHARED NEW ordListClear() OrdListAdd("RECEBIME", "RECEBCOD", "RECEBDAT", "DECEBDES") cFilt := "" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "RECEBIME->ITEM02 >= dIni .AND. RECEBIME->ITEM02 <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "RECEBIME->ITEM08 = nAten" ENDIF SET FILTER TO &cFilt RECEBIME->(DBGOTOP()) IF ! RECEBIME->(EOF()) WHILE ! RECEBIME->(EOF()) nRcb += RECEBIME->ITEM05 cRcb += LEFT(RECEBIME->ITEM04,28)+Trans(RECEBIME->ITEM05,"@E 999,999.99")+ CRLF RECEBIME->(DBSKIP(1)) END ENDIF CLOSE RECEBIME // Processando contas recebidas USE RELATDIA SHARED NEW SET FILTER TO RELATDIA->ITEM11 >= dIni .AND. RELATDIA->ITEM11 <= dFim RELATDIA->(DBGOTOP()) IF ! RELATDIA->(EOF()) WHILE ! RELATDIA->(EOF()) nDup += RELATDIA->ITEM12 IF RELATDIA->FORMPG > 1 aDup[RELATDIA->FORMPG] += RELATDIA->ITEM12 ELSE aDup[1] += RELATDIA->ITEM12 ENDIF RELATDIA->(DBSKIP(1)) END FOR nX := 1 TO LEN(aDup) IF aDup[nX] > 0 cDup += "RECEBIDO EM "+aFormasPg[nX]+REPLICATE(".",26-LEN("RECEBIDO EM "+aFormasPg[nX]))+": "+Trans(aDup[nX],"@E 999,999.99")+ CRLF ENDIF NEXT ENDIF CLOSE RELATDIA // Negocia‡Æo da d¡vida IF FILE("ARECNEGO.DBF") USE ARECNEGO SHARED NEW SET FILTER TO ARECNEGO->ITEM03 >= dIni .AND. ARECNEGO->ITEM03 <= dFim ARECNEGO->(DBGOTOP()) IF ! ARECNEGO->(EOF()) SUM ARECNEGO->ITEM10 TO nNgo ENDIF CLOSE ARECNEGO ENDIF // Pagamento de duplicatas IF FILE("RELATAPG.DBF") USE RELATAPG SHARED NEW SET FILTER TO RELATAPG->ITEM11 >= dIni .AND. RELATAPG->ITEM11 <= dFim RELATAPG->(DBGOTOP()) IF ! RELATAPG->(EOF()) SUM RELATAPG->ITEM12 TO nPgo cDeb += "PAGAMENTO DE DUPLICATAS...: "+Trans(nPgo,"@E 999,999.99")+ CRLF ENDIF CLOSE RELATAPG nDeb += nPgo ENDIF // Processar cheques FERASE(cPasta+"\CAIXATMP.CDX") SET SOFTSEEK ON SELECT 5 CAIXA->(DBCLEARFIL(NIL)) CAIXA->(DBSETORDER(1)) CAIXA->(DBSEEK(dIni)) INDEX ON CAIXA->DATA TAG MOVDATA TO "CAIXATMP" WHILE(CAIXA->DATA >= dIni .AND. CAIXA->DATA <= dFim ) ordListClear() OrdListAdd("CAIXATMP", "MOVDATA") SET SOFTSEEK OFF CAIXA->(DBGOTOP()) SET FILTER TO CAIXA->DATA >= dIni .AND. CAIXA->DATA <= dFim CAIXA->(DBGOTOP()) IF ! CAIXA->(EOF()) WHILE ! CAIXA->(EOF()) IF LEFT(CAIXA->HISTOR1,10) = "CHEQUE N. " nCh1 += CAIXA->ENTRADA nCh2 += CAIXA->SAIDA ENDIF IF LEFT(CAIXA->HISTOR1,10) = "HAVER CLI:" nHav += CAIXA->ENTRADA nTem := ASCAN(aHav, {|nCol| ncol[1] = LEFT(CAIXA->HISTOR2,26)+": "}) IF nTem = 0 AADD(aHav, {LEFT(CAIXA->HISTOR2,26)+": ", CAIXA->ENTRADA}) ELSE aHav[nTem,2] += CAIXA->ENTRADA ENDIF ENDIF IF LEFT(CAIXA->HISTOR1,13) = "DEVOLUCAO-COD" nDvl += CAIXA->SAIDA ENDIF IF LEFT(CAIXA->HISTOR1,13) = "CANC.DEV-COD." nCan += CAIXA->ENTRADA ENDIF IF LEFT(CAIXA->HISTOR2,10) = "REF. OS Nº" nSrv += CAIXA->ENTRADA ENDIF CAIXA->(DBSKIP(1)) END IF nCh2 > 0 cDeb += "PAGAMENTO DE CHEQUES......: "+Trans(nCh2,"@E 999,999.99")+ CRLF nDeb += nCh2 ENDIF ENDIF CLOSE CAIXA SELECT 5 USE CAIXA SHARED ordListClear() OrdListAdd("CAIXA", "CAIXDATA", "CAIXCODI", "CAIXDESC") // Determinar as formas de pagamento que somam ao caixa. SELECT 0 USE FORMASPG SHARED NEW VIA "DBFCDX" OrdListClear() OrdListAdd("FORMASPG", "Fpg0001", "Fpg0002") FORMASPG->(dbgotop()) WHILE ! FORMASPG->(EOF()) AADD(aFormPg, FORMASPG->ITEM03) FORMASPG->(DBSKIP(1)) END CLOSE FORMASPG SELECT 0 nDeb += nDvl nTtl := (nDin+nDup+nHav+nNgo+nIni+nCh1+nRcb+nSrv+nCan) 1356 if aFormPg[ 2] = .T. ; nTtl += nPg2 ; endif if aFormPg[ 3] = .T. ; nTtl += nPg3 ; endif if aFormPg[ 4] = .T. ; nTtl += nPg4 ; endif if aFormPg[ 5] = .T. ; nTtl += nPg5 ; endif if aFormPg[ 6] = .T. ; nTtl += nPg6 ; endif if aFormPg[ 7] = .T. ; nTtl += nPg7 ; endif if aFormPg[ 8] = .T. ; nTtl += nPg8 ; endif if aFormPg[ 9] = .T. ; nTtl += nPg9 ; endif if aFormPg[10] = .T. ; nTtl += nOut ; endif cText += "--------------- VENDAS ---------------"+ CRLF cText += "DINHEIRO..................: "+Trans(nDin,"@E 999,999.99")+ CRLF if aFormPg[ 2] = .T. ; cText += cFpgt2+REPLICATE(".",26-LEN(cFpgt2))+": "+Trans(nPg2,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 3] = .T. ; cText += cFpgt3+REPLICATE(".",26-LEN(cFpgt3))+": "+Trans(nPg3,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 4] = .T. ; cText += cFpgt4+REPLICATE(".",26-LEN(cFpgt4))+": "+Trans(nPg4,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 5] = .T. ; cText += cFpgt5+REPLICATE(".",26-LEN(cFpgt5))+": "+Trans(nPg5,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 6] = .T. ; cText += cFpgt6+REPLICATE(".",26-LEN(cFpgt6))+": "+Trans(nPg6,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 7] = .T. ; cText += cFpgt7+REPLICATE(".",26-LEN(cFpgt7))+": "+Trans(nPg7,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 8] = .T. ; cText += cFpgt8+REPLICATE(".",26-LEN(cFpgt8))+": "+Trans(nPg8,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 9] = .T. ; cText += cFpgt9+REPLICATE(".",26-LEN(cFpgt9))+": "+Trans(nPg9,"@E 999,999.99")+ CRLF ; endif if aFormPg[10] = .T. ; cText += "OUTROS....................: "+Trans(nOut,"@E 999,999.99")+ CRLF ; endif IF nSrv > 0 cText += "RECEBIDO DE SERVIÇOS (OS).: "+Trans(nSrv,"@E 999,999.99")+ CRLF ENDIF IF nCan > 0 cText += "CANCELAMENTO DE DEVOLUCAO.: "+Trans(nCan,"@E 999,999.99")+ CRLF ENDIF IF nHav > 0 cText += "---------- RECEBIDO DE HAVER ---------"+ CRLF FOR nXX := 1 TO LEN(aHav) cText += aHav[nXX,1]+Trans(aHav[nXX,2],"@E 999,999.99")+ CRLF NEXT IF LEN(aHav) > 1 cText += " =========="+ CRLF cText += "TOTAL RECEDIGO DE HAVER...: "+Trans(nHav,"@E 999,999.99")+ CRLF ENDIF ENDIF IF ! EMPTY(cDup) cText += ""+ CRLF cText += "------- RECEBIDO DE DUPLICADAS -------"+ CRLF cText += cDup IF (nDup) > 0 cText += " =========="+ CRLF cText += "TOTAL RECEBIDO DUPLICATAS: "+Trans(nDup,"@E 999,999.99")+ CRLF ENDIF ENDIF IF ! EMPTY(cRcb) cText += ""+ CRLF cText += "--------- OUTROS RECEBIMENOTS --------"+ CRLF cText += cRcb ENDIF cText += " =========="+ CRLF cText += "TOTAL DAS ENTRADAS........: "+Trans(nTtl,"@E 999,999.99")+ CRLF IF nDeb > 0 cText += ""+ CRLF cText += "--------------- SAIDAS ---------------"+ CRLF IF nDvl > 0 cText += "DEVOLUCAO DE MARCADORIA...: "+Trans(nDvl,"@E 999,999.99")+ CRLF ENDIF cText += cDeb cText += " =========="+ CRLF cText += "TOTAL DAS SAIDAS..........: "+Trans(nDeb,"@E 999,999.99")+ CRLF ENDIF IF (nNgo+nCh1) > 0 cText += " =========="+ CRLF ENDIF IF (nNgo) > 0 cText += "RECEBIDO DE NEGOCIACAO....: "+Trans(nNgo,"@E 999,999.99")+ CRLF ENDIF IF (nCh1) > 0 cText += "CHEQUES RECEBIDOS.........: "+Trans(nCh1,"@E 999,999.99")+ CRLF ENDIF cText += ""+ CRLF cText += "--------- SALDO DO MOVIMENTO ---------"+ CRLF cText += "DINHEIRO EM MAOS..........: "+Trans((nDin+nIni)-nDeb,"@E 999,999.99")+CRLF cText += "SALDO DO MOVIMENTO........: "+Trans(nTtl-nDeb,"@E 999,999.99")+CRLF IF nEnHoje <> NIL nEnHoje := nTtl nSaHoje := nDeb ENDIF SELECT(oSelect) RETURN(cText) id=code>id=code>id=blue>Renato Clipper5.3, Blinker7.0 e FWH25 p/ Clipper. Quote Link to comment Share on other sites More sharing options...
rclipper Posted January 10, 2007 Author Report Share Posted January 10, 2007 Amigos apareceu este erro que não entendo: Numerei a linha 1356, para os amigos saber onde dá o erro. Aplicacao ========== Nome e Caminho: C:\SUPERM\SUPERM.EXE Tamanho: 2,299,904 bytes Maximo de arquivos abertos: ( SetHandleCount() ) 250 Ocorreu erro em: 10/01/2007, 23:39:52 Descricao: Erro BASE/1132 Bound error: array access Chamadas ao Stack ================= CHAMADA DE CHKMOVCX(1356) CHAMADA DE (b)MOVCAIXA(99) CHAMADA DE (b)MOVCAIXA(99) CHAMADA DE MOVCAIXA(99) CHAMADA DE (b)MAIN(60) CHAMADA DE TSBUTTON:LBUTTONDOW(1100) CHAMADA DE TSBUTTON:HANDLEEVEN(1007) CHAMADA DE MAIN(111) LOCAL aFormPg := {} LOCAL cDeb, cRcb, cDup, oResDl, lOk, lFecha, oSelect, aFormasPg, aDup, aHav LOCAL nDin, nPg2, nPg3, nPg4, nPg5, nPg6, nPg7, nPg8, nPg9, nOut, nHav, nDvl, nSrv, nTtl, nDeb, nRcb, nDup, nNgo, nIni, nPgo, nCh1, nCh2, nCan STORE 0 TO nDin, nPg2, nPg3, nPg4, nPg5, nPg6, nPg7, nPg8, nPg9, nOut, nHav, nDvl, nSrv, nTtl, nDeb, nRcb, nDup, nNgo, nIni, nPgo, nCh1, nCh2, nCan PUBLIC dIni, dFim, nAten, cAten, cFilt dIni := DATE() dFim := DATE() nAten:= 0 cAten:= SPACE(40) cFilt:= "CAIXA->FECHADO = .F." aFormasPg := {"DINHEIRO", cFpgt2, cFpgt3, cFpgt4, cFpgt5, cFpgt6, cFpgt7, cFpgt8, cFpgt9,"OUTROS"} aDup := {0,0,0,0,0,0,0,0,0,0} aHav := {} lOk := .f. lFecha := .f. oSelect := SELECT() IF nEnHoje = NIL DEFINE DIALOG oResDl RESOURCE "CAIXA_INF" REDEFINE GET oGt1 VAR dIni ID 35 OF oResDl REDEFINE GET oGt2 VAR dFim ID 36 OF oResDl WHEN !EMPTY(DTOS(dIni)) VALID !EMPTY(DTOS(dFim)) REDEFINE GET oGt3 VAR nAten ID 38 OF oResDl VALID CxChkAtd(@nAten,@cAten,oResDl) REDEFINE GET oGt4 VAR cAten ID 39 OF oResDl UPDATE REDEFINE CHECKBOX oCbx VAR lFecha ID 37 OF oResDl WHEN .F. REDEFINE BUTTON oBt1 ID 40 OF oResDl ACTION (lOk := .t., oResDl:End()) REDEFINE BUTTON oBt2 ID 41 OF oResDl ACTION (lOk := .f., oResDl:End()) ACTIVATE DIALOG oResDl CENTERED IF ! lOk RETURN "" ENDIF ENDIF USE SALDOINI SHARED NEW IF ! FILE("SALDOINI.CDX") MsgMeter( { | oMeter, oText, oDlg, lEnd | ; BuildIndex( oMeter, oText, oDlg, @lEnd, "SALDOINI->DATA", "SALDOINI" ) },; "Classificando saldo inicial...", "Espere um momento!" ) ENDIF ordListClear() OrdListAdd("SALDOINI", "SALDOINI") IF SALDOINI->(DBSEEK(dIni)) nIni := SALDOINI->VALR ENDIF CLOSE SALDOINI FERASE(cPasta+"\VNDTMP.CDX") SET SOFTSEEK ON SELECT 2 VENDAS->(DBCLEARFIL(NIL)) VENDAS->(DBSETORDER(3)) VENDAS->(DBSEEK(dIni)) INDEX ON VENDAS->ITEM48 TAG VNDTMP01 TO "VNDTMP" WHILE( VENDAS->ITEM48 >= dIni .AND. VENDAS->ITEM48 <= dFim ) ordListClear() OrdListAdd("VNDTMP", "VNDTMP01") SET SOFTSEEK OFF VENDAS->(DBGOTOP()) cFilt := "VENDAS->ITEM52 = 0" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "VENDAS->ITEM48 >= dIni .AND. VENDAS->ITEM48 <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "VENDAS->ITEM36 = nAten" ENDIF cText := "RESUMO/CAIXA: "+DTOC(dIni)+" A "+DTOC(dFim) + CRLF IF nAten > 0 cText += "ATEND.: "+ALLTRIM(cAten) + CRLF ENDIF IF nIni <> 0 cText += "SALDO INICIAL.............: "+Trans(nIni,"@E 999,999.99")+ CRLF ENDIF cDeb := "" cRcb := "" cDup := "" SET FILTER TO &cFilt VENDAS->(dbGoTop()) IF ! VENDAS->(EOF()) WHILE ! VENDAS->(EOF()) IF ALLTRIM(VENDAS->ITEM10) $ "VENDA A VISTA & VENDA A PRAZO" nDin += VENDAS->ITEM11 nPg2 += VENDAS->ITEM13 nPg3 += VENDAS->ITEM58 nPg4 += VENDAS->ITEM59 nPg5 += VENDAS->ITEM60 nPg6 += VENDAS->ITEM61 nPg7 += VENDAS->ITEM62 nPg8 += VENDAS->ITEM20 nPg9 += VENDAS->ITEM63 nOut += VENDAS->ITEM64 ENDIF IF lFecha IF VENDAS->(RLOCK()) REPLACE VENDAS->ITEM52 WITH 1 VENDAS->(DBUNLOCKALL()) ENDIF ENDIF VENDAS->(DBSKIP(1)) END IF lFecha VENDAS->(DBCOMMITALL()) ENDIF ENDIF // Reabrir vendas para corrigir os Ãndices SELECT 2 CLOSE VENDAS SysRefresh() SELECT 2 USE VENDAS SHARED ordListClear() OrdListAdd("VENDAS", "VENDCODI", "VENDCLIE", "VENDDATA", "VENDNCNT") // PROCESSAR HAVER cFilt := "" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "HAVER->DATA >= dIni .AND. HAVER->DATA <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "HAVER->DATA = nAten" ENDIF // Processando despesas USE DESPESAS SHARED NEW ordListClear() OrdListAdd("DESPESAS", "DESPCODI", "DESPDATA", "DESPDESC") cFilt := "" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "DESPESAS->ITEM02 >= dIni .AND. DESPESAS->ITEM02 <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "DESPESAS->ITEM08 = nAten" ENDIF SET FILTER TO &cFilt DESPESAS->(DBGOTOP()) IF ! DESPESAS->(EOF()) WHILE ! DESPESAS->(EOF()) nDeb += DESPESAS->ITEM05 cDeb += LEFT(DESPESAS->ITEM04,28)+Trans(DESPESAS->ITEM05,"@E 999,999.99")+ CRLF DESPESAS->(DBSKIP(1)) END ENDIF CLOSE DESPESAS // Processando recebimentos USE RECEBIME SHARED NEW ordListClear() OrdListAdd("RECEBIME", "RECEBCOD", "RECEBDAT", "DECEBDES") cFilt := "" IF ! EMPTY(DTOS(dIni)) IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "RECEBIME->ITEM02 >= dIni .AND. RECEBIME->ITEM02 <= dFim" ENDIF IF nAten > 0 IF ! EMPTY(cFilt) ; cFilt += " .AND. " ; ENDIF cFilt += "RECEBIME->ITEM08 = nAten" ENDIF SET FILTER TO &cFilt RECEBIME->(DBGOTOP()) IF ! RECEBIME->(EOF()) WHILE ! RECEBIME->(EOF()) nRcb += RECEBIME->ITEM05 cRcb += LEFT(RECEBIME->ITEM04,28)+Trans(RECEBIME->ITEM05,"@E 999,999.99")+ CRLF RECEBIME->(DBSKIP(1)) END ENDIF CLOSE RECEBIME // Processando contas recebidas USE RELATDIA SHARED NEW SET FILTER TO RELATDIA->ITEM11 >= dIni .AND. RELATDIA->ITEM11 <= dFim RELATDIA->(DBGOTOP()) IF ! RELATDIA->(EOF()) WHILE ! RELATDIA->(EOF()) nDup += RELATDIA->ITEM12 IF RELATDIA->FORMPG > 1 aDup[RELATDIA->FORMPG] += RELATDIA->ITEM12 ELSE aDup[1] += RELATDIA->ITEM12 ENDIF RELATDIA->(DBSKIP(1)) END FOR nX := 1 TO LEN(aDup) IF aDup[nX] > 0 cDup += "RECEBIDO EM "+aFormasPg[nX]+REPLICATE(".",26-LEN("RECEBIDO EM "+aFormasPg[nX]))+": "+Trans(aDup[nX],"@E 999,999.99")+ CRLF ENDIF NEXT ENDIF CLOSE RELATDIA // Negocia‡Æo da d¡vida IF FILE("ARECNEGO.DBF") USE ARECNEGO SHARED NEW SET FILTER TO ARECNEGO->ITEM03 >= dIni .AND. ARECNEGO->ITEM03 <= dFim ARECNEGO->(DBGOTOP()) IF ! ARECNEGO->(EOF()) SUM ARECNEGO->ITEM10 TO nNgo ENDIF CLOSE ARECNEGO ENDIF // Pagamento de duplicatas IF FILE("RELATAPG.DBF") USE RELATAPG SHARED NEW SET FILTER TO RELATAPG->ITEM11 >= dIni .AND. RELATAPG->ITEM11 <= dFim RELATAPG->(DBGOTOP()) IF ! RELATAPG->(EOF()) SUM RELATAPG->ITEM12 TO nPgo cDeb += "PAGAMENTO DE DUPLICATAS...: "+Trans(nPgo,"@E 999,999.99")+ CRLF ENDIF CLOSE RELATAPG nDeb += nPgo ENDIF // Processar cheques FERASE(cPasta+"\CAIXATMP.CDX") SET SOFTSEEK ON SELECT 5 CAIXA->(DBCLEARFIL(NIL)) CAIXA->(DBSETORDER(1)) CAIXA->(DBSEEK(dIni)) INDEX ON CAIXA->DATA TAG MOVDATA TO "CAIXATMP" WHILE(CAIXA->DATA >= dIni .AND. CAIXA->DATA <= dFim ) ordListClear() OrdListAdd("CAIXATMP", "MOVDATA") SET SOFTSEEK OFF CAIXA->(DBGOTOP()) SET FILTER TO CAIXA->DATA >= dIni .AND. CAIXA->DATA <= dFim CAIXA->(DBGOTOP()) IF ! CAIXA->(EOF()) WHILE ! CAIXA->(EOF()) IF LEFT(CAIXA->HISTOR1,10) = "CHEQUE N. " nCh1 += CAIXA->ENTRADA nCh2 += CAIXA->SAIDA ENDIF IF LEFT(CAIXA->HISTOR1,10) = "HAVER CLI:" nHav += CAIXA->ENTRADA nTem := ASCAN(aHav, {|nCol| ncol[1] = LEFT(CAIXA->HISTOR2,26)+": "}) IF nTem = 0 AADD(aHav, {LEFT(CAIXA->HISTOR2,26)+": ", CAIXA->ENTRADA}) ELSE aHav[nTem,2] += CAIXA->ENTRADA ENDIF ENDIF IF LEFT(CAIXA->HISTOR1,13) = "DEVOLUCAO-COD" nDvl += CAIXA->SAIDA ENDIF IF LEFT(CAIXA->HISTOR1,13) = "CANC.DEV-COD." nCan += CAIXA->ENTRADA ENDIF IF LEFT(CAIXA->HISTOR2,10) = "REF. OS Nº" nSrv += CAIXA->ENTRADA ENDIF CAIXA->(DBSKIP(1)) END IF nCh2 > 0 cDeb += "PAGAMENTO DE CHEQUES......: "+Trans(nCh2,"@E 999,999.99")+ CRLF nDeb += nCh2 ENDIF ENDIF CLOSE CAIXA SELECT 5 USE CAIXA SHARED ordListClear() OrdListAdd("CAIXA", "CAIXDATA", "CAIXCODI", "CAIXDESC") // Determinar as formas de pagamento que somam ao caixa. SELECT 0 USE FORMASPG SHARED NEW VIA "DBFCDX" OrdListClear() OrdListAdd("FORMASPG", "Fpg0001", "Fpg0002") FORMASPG->(dbgotop()) WHILE ! FORMASPG->(EOF()) AADD(aFormPg, FORMASPG->ITEM03) FORMASPG->(DBSKIP(1)) END CLOSE FORMASPG SELECT 0 nDeb += nDvl nTtl := (nDin+nDup+nHav+nNgo+nIni+nCh1+nRcb+nSrv+nCan) 1356 if aFormPg[ 2] = .T. ; nTtl += nPg2 ; endif if aFormPg[ 3] = .T. ; nTtl += nPg3 ; endif if aFormPg[ 4] = .T. ; nTtl += nPg4 ; endif if aFormPg[ 5] = .T. ; nTtl += nPg5 ; endif if aFormPg[ 6] = .T. ; nTtl += nPg6 ; endif if aFormPg[ 7] = .T. ; nTtl += nPg7 ; endif if aFormPg[ 8] = .T. ; nTtl += nPg8 ; endif if aFormPg[ 9] = .T. ; nTtl += nPg9 ; endif if aFormPg[10] = .T. ; nTtl += nOut ; endif cText += "--------------- VENDAS ---------------"+ CRLF cText += "DINHEIRO..................: "+Trans(nDin,"@E 999,999.99")+ CRLF if aFormPg[ 2] = .T. ; cText += cFpgt2+REPLICATE(".",26-LEN(cFpgt2))+": "+Trans(nPg2,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 3] = .T. ; cText += cFpgt3+REPLICATE(".",26-LEN(cFpgt3))+": "+Trans(nPg3,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 4] = .T. ; cText += cFpgt4+REPLICATE(".",26-LEN(cFpgt4))+": "+Trans(nPg4,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 5] = .T. ; cText += cFpgt5+REPLICATE(".",26-LEN(cFpgt5))+": "+Trans(nPg5,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 6] = .T. ; cText += cFpgt6+REPLICATE(".",26-LEN(cFpgt6))+": "+Trans(nPg6,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 7] = .T. ; cText += cFpgt7+REPLICATE(".",26-LEN(cFpgt7))+": "+Trans(nPg7,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 8] = .T. ; cText += cFpgt8+REPLICATE(".",26-LEN(cFpgt8))+": "+Trans(nPg8,"@E 999,999.99")+ CRLF ; endif if aFormPg[ 9] = .T. ; cText += cFpgt9+REPLICATE(".",26-LEN(cFpgt9))+": "+Trans(nPg9,"@E 999,999.99")+ CRLF ; endif if aFormPg[10] = .T. ; cText += "OUTROS....................: "+Trans(nOut,"@E 999,999.99")+ CRLF ; endif IF nSrv > 0 cText += "RECEBIDO DE SERVIÇOS (OS).: "+Trans(nSrv,"@E 999,999.99")+ CRLF ENDIF IF nCan > 0 cText += "CANCELAMENTO DE DEVOLUCAO.: "+Trans(nCan,"@E 999,999.99")+ CRLF ENDIF IF nHav > 0 cText += "---------- RECEBIDO DE HAVER ---------"+ CRLF FOR nXX := 1 TO LEN(aHav) cText += aHav[nXX,1]+Trans(aHav[nXX,2],"@E 999,999.99")+ CRLF NEXT IF LEN(aHav) > 1 cText += " =========="+ CRLF cText += "TOTAL RECEDIGO DE HAVER...: "+Trans(nHav,"@E 999,999.99")+ CRLF ENDIF ENDIF IF ! EMPTY(cDup) cText += ""+ CRLF cText += "------- RECEBIDO DE DUPLICADAS -------"+ CRLF cText += cDup IF (nDup) > 0 cText += " =========="+ CRLF cText += "TOTAL RECEBIDO DUPLICATAS: "+Trans(nDup,"@E 999,999.99")+ CRLF ENDIF ENDIF IF ! EMPTY(cRcb) cText += ""+ CRLF cText += "--------- OUTROS RECEBIMENOTS --------"+ CRLF cText += cRcb ENDIF cText += " =========="+ CRLF cText += "TOTAL DAS ENTRADAS........: "+Trans(nTtl,"@E 999,999.99")+ CRLF IF nDeb > 0 cText += ""+ CRLF cText += "--------------- SAIDAS ---------------"+ CRLF IF nDvl > 0 cText += "DEVOLUCAO DE MARCADORIA...: "+Trans(nDvl,"@E 999,999.99")+ CRLF ENDIF cText += cDeb cText += " =========="+ CRLF cText += "TOTAL DAS SAIDAS..........: "+Trans(nDeb,"@E 999,999.99")+ CRLF ENDIF IF (nNgo+nCh1) > 0 cText += " =========="+ CRLF ENDIF IF (nNgo) > 0 cText += "RECEBIDO DE NEGOCIACAO....: "+Trans(nNgo,"@E 999,999.99")+ CRLF ENDIF IF (nCh1) > 0 cText += "CHEQUES RECEBIDOS.........: "+Trans(nCh1,"@E 999,999.99")+ CRLF ENDIF cText += ""+ CRLF cText += "--------- SALDO DO MOVIMENTO ---------"+ CRLF cText += "DINHEIRO EM MAOS..........: "+Trans((nDin+nIni)-nDeb,"@E 999,999.99")+CRLF cText += "SALDO DO MOVIMENTO........: "+Trans(nTtl-nDeb,"@E 999,999.99")+CRLF IF nEnHoje <> NIL nEnHoje := nTtl nSaHoje := nDeb ENDIF SELECT(oSelect) RETURN(cText) id=code>id=code>id=blue>Renato Clipper5.3, Blinker7.0 e FWH25 p/ Clipper. Quote Link to comment Share on other sites More sharing options...
viol Posted January 11, 2007 Report Share Posted January 11, 2007 Renato, Se vc colocar uma posição além do tamanho do array, ele retorna Erro BASE/1132 Bound error: array access. porque o elemento refenciado não existe (a matriz citada não existe.) provavelmente seu banco de dados esta vazio, na função WHILE. encontrou fim de arquivo e não foi criado o array aFormPg[ 2] Viol E-mail :sergioviol@terra.com.br MSN: vmprintscrpardo@hotmail.com Santa Cruz do Rio Pardo/SP FW2.6 + XHARBOUR 0.99.50 + BCC551 + XDEV 0.33 (workshop ou pelles "não sei qual !! não consegui entender nenhum ... hahah) Quote Link to comment Share on other sites More sharing options...
Skineth Posted January 11, 2007 Report Share Posted January 11, 2007 Caro Amigo Renato tenta desta forma: FUNCTION ChkMovCX(nEnHoje, nSaHoje) Local aFormPG:={} AADD(aFormPg,{aFormPg[ 2],aFormPg[ 3], até aFormPg[10]}) Qualquer coisa, é só postar suas dúvidas. Cesar Clipper5.3, Blinker7.0, FWH25 para clipper Quote Link to comment Share on other sites More sharing options...
rclipper Posted January 12, 2007 Author Report Share Posted January 12, 2007 Amigos procedi conforme a orientação dos amigos, mas ainda continua o erro. Por favor, como consigo resolver? Grato. Atenciosamente, Renato Renato Clipper5.3, Blinker7.0 e FWH25 p/ Clipper. Quote Link to comment Share on other sites More sharing options...
Flavio A. Zago Posted January 12, 2007 Report Share Posted January 12, 2007 Ola Renato Verifique se na saÃda do WHILE o seu vetor tem os elementos que você está tentando acessar. Coloque um MsgInfo(STR(LEN(aFormPg))) e veja o resultado. WHILE ! FORMASPG->(EOF()) AADD(aFormPg, FORMASPG->ITEM03) FORMASPG->(DBSKIP(1)) END MsgInfo(STR(LEN(aFormPg))) Se você quiser forçar o vetor a ter 10 elementos na saÃda do WHILE mude para: WHILE ! FORMASPG->(EOF()) .OR. LEN(aFormPg) < 10 []´s Flavio Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.