Página 1 de 1

Continuou o problema

Enviado: 14 Set 2004 12:04
por JuniorVaz
:( Continuou o problema, o arquivo dbf usado nesse caso é o lanord.dbf, e tem sim o campo lote nele, vou colocar abaixo o codigo dessa parte pra ver se alguem da alguma ideia... VLW ae pela ajuda até agora... :)

PS: Este erro está dando na hora em que eu dou s(sim), quando ele vai executar a impressão para o arquivo *.txt

clear
cbc()
setcolor(cor2)
Set date format to "dd/mm/yyyy"
cx(2,2,22,77," GERAR ETIQUETAS POR LOTE ")
setcolor(cor2)
SELE 0
USE LANORD ALIAS ORD
SET INDE TO LANPD,LANTL,LANORD
SELE 0
use cadgra inde cadgra alias gra
set inde to cadgra
SELE 0
use cadMAT inde cadMAT alias MAT
set inde to cadMAT
sele 0
use lanped inde lanped alias ped
set inde to lanped
sele 0
LI=00
xx=savescreen(00,00,24,79)
xdata = date()
do while .t.
SETCOLOR(COR2)
RESTscreen(00,00,24,79,XX)
stor SPACE(03) to xlote
STOR 1 TO TLINI
stor 0 to XNUMPED
STOR 999 TO TLFIM
STOR 999999 TO xnumfim
do while .t.
@ 10,4 say "Lote..: " get xlote pict "!!!"
read
if lastkey()=27 .or. empty(xlote)
exit
endif
@ 12,04 SAY "Digite o Numero do Pedido ou Tecle <ENTER> para todos..: " get XNUMPED pict '999999'
read
if lastkey()=27
loop
endif
if empty(XNUMPED) .or. XNUMPED=0
@ 12,3 clea to 12,70
@ 12,4 SAY "Talao de Inicio..: " get tlini pict "999"
@ 13,4 say "Talao de Fim.....: " get tlfim pict "999" valid tlfim>=tlini
read
ENDIF
cc=' '
@ 15,4 say "Confirma Gera‡Æo de Etiquetas?" get cc pict "!" valid cc $ "SN"
read
if cc="S"
SET Printer To (xlote) + ".txt"
Set Devi to printer
if empty(XNUMPED) .or. XNUMPED=0
sele ord
SET INDE TO LANord
set filter to lote+str(numord,3)>=xlote+str(tlini,3) .and. lote+str(numord,3)<=xlote+str(tlfim,3)
else
SELE ORD
SET INDE TO LANPD
SET FILTER TO LOTE+STR(NUMPED,6)=XLOTE+STR(XNUMPED,6)
endif
do imp_eti
SET DEVI TO SCREEN
exit
else
exit
endif
enddo
enddo
close all
return
*******************

proc imp_eti
SELE ORD
@ li,00 say "Ref#Material#Cor#Numeracao#CodBarra#Figura#Quat#Obs"
SEEK XLOTE+STR(XNUMPED,6)
IF XNUMPED=0 .OR. EMPTY(XNUMPED)
SEEK XLOTE+STR(TLINI,3)
ENDIF
do while .t.
li=00
sele ord
xlote=lote
xgrade = ord->grade
xcodmat = codmat
sele mat
seek xcodmat
xdescmat=descmat
if !empty(gra->t01) .AND. ORD->T01>=1
for i = 1 to ord->t01
li=li+1
@ li,00 say ord->codref+"#"+padr(xdescmat,15,' ')+"#"+ord->cor+"#"+gra->t01+"##"+ord->codref+"#"+"1"+"#"+padr(lote,1,3,' ')+"-"+str(ORD->numord,3)
next
ELSE
endif
sele ord
SKIP
if lote+str(numord,3)>xlote+str(tlfim,3) .or. eof()
li=li+1
@ li,00 say "Registros"
li=li+1
@ li,00 say "Tutor 32"
li=li+1
@ li,00 say "MW Etiquetas, fone (48)265-1251 - "
@ li,00 say xdata

exit
endif
enddo
retu

Enviado: 14 Set 2004 13:29
por Dudu_XBase

Código: Selecionar todos

clear 
cbc() 
setcolor(cor2) 
Set date format to "dd/mm/yyyy" 
cx(2,2,22,77," GERAR ETIQUETAS POR LOTE ") 
setcolor(cor2) 

USE LANORD ALIAS ORD NEW 
SET INDE TO LANPD,LANTL,LANORD 

use cadgra inde cadgra alias gra NEW 
set inde to cadgra 

use cadMAT inde cadMAT alias MAT NEW 
set inde to cadMAT 

use lanped inde lanped alias ped NEW 
set inde to lanped 

LI=00 
xx=savescreen(00,00,24,79) 
xdata = date() 
do while .t. 
 SETCOLOR(COR2) 
 RESTscreen(00,00,24,79,XX) 
 stor SPACE(03) to xlote 
 STOR 1 TO TLINI 
 stor 0 to XNUMPED 
 STOR 999 TO TLFIM 
 STOR 999999 TO xnumfim 
 do while .t. 
       @ 10,4 say "Lote..: " get xlote pict "!!!" 
       read 
       
       if lastkey()=27 .or. empty(xlote) 
         exit 
       endif 
       @ 12,04 SAY "Digite o Numero do Pedido ou Tecle <ENTER> para todos..: " get XNUMPED pict '999999' 
       read 
       if lastkey()=27 
         loop 
       endif 
       if empty(XNUMPED) .or. XNUMPED=0 
         @ 12,3 clea to 12,70 
	 @ 12,4 SAY "Talao de Inicio..: " get tlini pict "999" 
	 @ 13,4 say "Talao de Fim.....: " get tlfim pict "999" valid tlfim>=tlini 
	 read 
       ENDIF 

        cc=' ' 
	@ 15,4 say "Confirma Gera‡Æo de Etiquetas?" get cc pict "!" valid cc $ "SN" 
	read 
	if cc="S" 
		SET Printer To (xlote) + ".txt" 
		Set Devi to printer 
		if empty(XNUMPED) .or. XNUMPED=0 
		   sele ord 
	           DBSESETORDER(Ordnumber("LANord")) 
	           set filter to lote+str(numord,3)>=xlote+str(tlini,3) .and. lote+str(numord,3)<=xlote+str(tlfim,3) 
		else 
		   SELE ORD
		   DBSESETORDER(Ordnumber("LANpD"))  
	           SET FILTER TO LOTE+STR(NUMPED,6)=XLOTE+STR(XNUMPED,6) 
		endif 
		
		// rotina de impressao
		do imp_eti
		 
		SET DEVI TO SCREEN 
	 endif
	 exit 
    enddo 
enddo 
close all 
return 
******************* 

proc imp_eti 

SELE ORD 

@ li,00 say "Ref#Material#Cor#Numeracao#CodBarra#Figura#Quat#Obs" 

SEEK XLOTE+STR(XNUMPED,6) 

IF XNUMPED=0 .OR. EMPTY(XNUMPED) 
  SEEK XLOTE+STR(TLINI,3) 
ENDIF 

do while .t. 
 li=00 
 sele ord 
 xlote=lote 
 xgrade = ord->grade 
 xcodmat = codmat 
 mat->(dbseek(xCodmat)) 
 xdescmat=mat->descmat 
 if !empty(gra->t01) .AND. ORD->T01>=1 
   for i = 1 to ord->t01 
      li=li+1 
      @ li,00 say ord->codref+"#"+padr(xdescmat,15,' ')+"#"+ord->cor+"#"+gra->t01+"##"+ord->codref+"#"+"1"+"#"+padr(lote,1,3,' ')+"-"+str(ORD->numord,3) 
   next 
 ELSE 
 endif 
 
 ord->(dbskip()) 
 if lote+str(numord,3)>xlote+str(tlfim,3) .or. eof() 
    li=li+1 
    @ li,00 say "Registros" 
    li=li+1 
    @ li,00 say "Tutor 32" 
    li=li+1 
    @ li,00 say "MW Etiquetas, fone (48)265-1251 - " 
    @ li,00 say xdata 
    Exit 
  endif 
enddo 

return