Estou com problemas ao utilizar o Comando Total On no Clipper, pois cada vez que acabo determinada consulta ou impressão de um relatorio e retorno à tela de escolha de periodo ao qual o arquivo totalizado devera conter dá erro na criação do arquivo, gostaria de saber o por que. segue fragmento do codigo.
Código: Selecionar todos
PROCEDURE ABC_CLI
SELE 2
USE FATCONHE SHAR
IF NETERR()
DO AVISO WITH "ERRO 2"
RETURN
ENDIF
GOTO TOP
if !EOF()
While !EOF()
RLock()
while !RLock()
end
Repl qtde_conhe with 1
skip
end
endif
goto top
COPY TO &TMP1 FOR IMPRESSO="*" .AND. CANCELA=" "
SELE 15
USE &TMP1
IF LASTREC()=0
RETURN
ENDIF
INDEX ON NOM_CLI+DTOS(DAT_CONH)+STR(NUM_CONH,6) TO &TMP1
SELE 1
USE FATCLIEN SHAR
IF NETERR()
DO AVISO WITH "ERRO 2"
RETURN
ENDIF
SET INDEX TO FATCLIEN
mdatai=date() // STR(month(DATE()),2)+STR(year(date()),4)
mdataf=date()
mtipo ="S"
mqual =DT_LOC
DO WHILE .T.
SELE 1
DO T_ABC_CLI
@ 23,00 CLEAR
@ 23,00 SAY PADC("[ENTER] Exibe. [*] Todos. [ESC] Finaliza.",80)
mcod_cli = SPACE(18)
@ 04,09 GET mcod_cli PICT "!9999999999999"
READ
IF LASTKEY()=27
EXIT
ENDIF
@ 23,00 CLEAR
IF LEFT(mcod_cli,1)=" "
GO TOP
IF EOF() .OR. LASTREC()=0
LOOP
ENDIF
SET INDEX TO FATCLORD
GO TOP
mpos=RECNO()
DO CONSULTA WITH 1,"CLIE",0
SET INDEX TO FATCLIEN
IF LASTKEY()=27
LOOP
ENDIF
GO mpos
mcod_cli=CGC
ELSE
IF LEN(ALLTRIM(mcod_cli))=14
mcod_cli = SUBS(mcod_cli,01,02) +"."+ SUBS(mcod_cli,03,03) +"."+ SUBS(mcod_cli,06,03) +"/"+ SUBS(mcod_cli,09,04) +"-"+ SUBS(mcod_cli,13,02)
ELSE
IF LEN(ALLTRIM(mcod_cli))=11
mcod_cli = SUBS(mcod_cli,01,03) +"."+ SUBS(mcod_cli,04,03) +"."+ SUBS(mcod_cli,07,03) +"-"+ SUBS(mcod_cli,10,02)
ELSE
IF LEFT(mcod_cli,1)<>"*"
LOOP
ENDIF
ENDIF
ENDIF
ENDIF
SET COLOR TO B+/W
@ 04,09 SAY mcod_cli
SET COLOR TO B/W,N/GB
IF LEFT(mcod_cli,1)="*"
mnom_cli="********** TODOS **********"
ELSE
SEEK mcod_cli
IF EOF()
DO AVISO WITH "ERRO 7"
LOOP
ENDIF
mnom_cli=NOM
ENDIF
WHILE .T.
SELE 2
GO TOP
DO T_ABC_CLI
SET COLOR TO B+/W
@ 04,09 SAY LEFT(mnom_cli,29)
SET COLOR TO B/W,N/GB
@ 23,00 CLEAR
@ 23,32 SAY "[ESC] Retorna."
@ 04,47 GET mdatai pict "99/99/9999" VALID(dtoc(mdatai) <= dtoc(date()))
@ 04,60 Get mdataf pict "99/99/9999" VALID(dtoc(mdataf) >= dtoc(mdatai))
READ
IF LASTKEY()=27
EXIT
ENDIF
mtipo = "S"
@ 23,00 CLEAR
@ 23,32 SAY "Consultando..."
IF mqual=3
LOCA FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf
ELSE
LOCA FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf .AND. COD_LOC=mqual
ENDIF
mTotalGeral:=0
if !EOF()
while !EOF()
mTotalGeral+=TOT_FRT
cont
end
IF mqual=3
IF LEFT(mcod_cli,1)<>"*"
SELE 15
GOTO TOP
TOTAL ON NOM_CLI fields TOT_FRT, QTDE_CONHE TO &TMP2. FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf .AND. COD_CLI=mcod_cli
use &TMP2
INDEX ON STR(TOT_FRT,10,2) TO &TMP2. DESC
LOCA FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf .AND. COD_CLI=mcod_cli
ELSE
SELE 15
GOTO TOP
TOTAL ON NOM_CLI fields TOT_FRT, QTDE_CONHE TO &TMP2. FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf
use &TMP2
INDEX ON STR(TOT_FRT,10,2) TO &TMP2. DESC
LOCA FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf
ENDIF
ELSE
IF LEFT(mcod_cli,1)<>"*"
SELE 15
GOTO TOP
TOTAL ON NOM_CLI fields TOT_FRT, QTDE_CONHE TO &TMP2. FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf .AND. COD_CLI=mcod_cli
use &TMP2
INDEX ON STR(TOT_FRT,10,2) TO &TMP2. DESC
LOCA FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf .AND. COD_CLI=mcod_cli .AND. COD_LOC=mqual
ELSE
SELE 15
GOTO TOP
TOTAL ON NOM_CLI FIELDS TOT_FRT, QTDE_CONHE TO &TMP2. FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf
use &TMP2
INDEX ON STR(TOT_FRT,10,2) TO &TMP2. DESC
LOCA FOR DAT_CONH >= mdatai .AND. DAT_CONH <= mdataf .AND. COD_LOC=mqual
ENDIF
ENDIF
endifObrigado!
por Toledo: *** negrito estava nas linhas: 147, 154, 163 e 170



