RE:Hp 1006 impresion codigo de barras
Este es un programa que imprime tres etiquetas por linea cogiendo los datos de una dbf que carga a partir de otra.
no imprime directamente lo manda a un fichero txt y luego lo imprime a la impresora por defecto.
PROCEDURE ETIQUE
SET ESCAPE ON
CLEAR
PLSWAIT(.T.,"ESPERE UN MOMENTO...")
***********BORRA EL CONTENIDO DE ETIQUETAS del fichero de trabajo
CLOSE DATABASES
USE IMAGETIQ &&FICHERO IMAGEN VACIO DE DATOS
COPY STRUCTURE TO ETIQUETA
COPY FILE IMAGETIQ.NTX TO ETIQUETA.NTX
CLOSE DATABASES
*************
SELECT 1
USE ENTRADAS &&contiene los datos de la etiqueta
SET INDEX TO ENTRADAS
SELECT 2
USE ETIQUETA EXCLUSIV
SET INDEX TO ETIQUETA
SELECT 3
USE COLORES &&fichero que contiene una tabla de colores de los articulos
SET INDEX TO COLORES
SELECT 1
GO TOP
WPVP=PVP
WNOMBRE=ARTICULO
WCODIGO=CODIGO
WCOL=SUBSTR(WCODIGO,9,2)
SELECT 3
SEEK WCOL
WCOLOR=COLOR
WPAGINA=1
WREG=1
SELECT 1
DO WHILE .NOT. EOF()
SELECT 2
APPEND BLANK
DO BLOQUEO
REPLACE ARTICULO WITH WNOMBRE
REPLACE CODIGO WITH WCODIGO
REPLACE PVP WITH WPVP
REPLACE COLOR WITH WCOLOR
IF WREG < 28
REPLACE PAGINA WITH WPAGINA
WREG=WREG+1
ELSE
WREG=2
WPAGINA=WPAGINA+1
REPLACE PAGINA WITH WPAGINA
ENDIF
UNLOCK
SELECT 1
SKIP
WPVP=PVP
WNOMBRE=ARTICULO
WCODIGO=CODIGO
WCOL=SUBSTR(WCODIGO,9,2)
SELECT 3
SEEK WCOL
WCOLOR=COLOR
SELECT 1
ENDDO
COMMIT
SELECT 2 &&ETIQUETAS
GO TOP
CLEAR
IF EOF()
SET CURSOR OFF
PLSWAIT(.T.,"NO HAY ETIQUETAS..PULSE UNA TECLA")
INKEY(0)
SET CURSOR ON
RETURN
ELSE
WSN=" "
WPAGINA1=1
WPAGINA2=WPAGINA
WRESTO=MOD(LASTREC(),27)
IF MOD(LASTREC(),27) > 0
WPAGINA=WPAGINA-1
ENDIF
@ 0,0 SAY CENTRA("LISTADO DE ETIQUETAS EN A4")
@ 4,10 SAY "ETIQUETAS PENDIENTES DE IMPRIMIR............. "+ALLTRIM(STR(INT(LASTREC())))
@ 6,10 SAY "NUMERO DE PAGINAS COMPLETAS A IMPRIMIR....... "+ALLTRIM(STR(INT(WPAGINA)))
@ 8,10 SAY "RESTO DE ETIQUETAS A IMPRIMIR................ "+ALLTRIM(STR(INT(WRESTO)))
@ 10,10 SAY "IMPRIMIR DESDE LA PAGINA......................" GET WPAGINA1 PICT "99999"
@ 12,10 SAY "A LA PAGINA..................................." GET WPAGINA2 PICT "99999"
@ 14,10 SAY "QUIERE IMPRIMIR S/N" GET WSN PICT "!" VALID (WSN$"SN")
READ
IF WSN="N"
RETURN
ENDIF
IF LASTKEY()=27
RETURN
ENDIF
ENDIF
********
GO TOP
DO WHILE .NOT. EOF()
IF PAGINA < WPAGINA1 .OR. PAGINA > WPAGINA2
DO BLOQUEO
DELETE
UNLOCK
ENDIF
SKIP
ENDDO
PACK
SET DEVICE TO PRINT
SET PRINTER TO TEXTO.TXT
GO TOP
Z=1
WRE=LASTREC()
DECLARE TABLA1[LASTREC()],TABLA2[LASTREC()],TABLA3[LASTREC()],TABLA4[LASTREC()]
FOR Z=1 TO WRE
TABLA1[Z]=SUBSTR(CODIGO,11,2)
TABLA2[Z]=PVP
TABLA3[Z]=COLOR
TABLA4[Z]=ARTICULO
SKIP
NEXT
GO TOP
@ 0,0 SAY CHR(27)+CHR(64) &&INICIALIZA IMPRESORA
X=2
Z=1
N=4
@ 0,50 SAY "PAGINA: "+ALLTRIM(STR(INT(WPAGINA1)))
WPAGINA1=WPAGINA1+1
WCONTADOR=0
DO CABECERA
********************
DO WHILE .NOT. EOF()
@ N,X SAY CHR(27)+CHR(40)+CHR(66)+CHR(18)+CHR(1)+CHR(6)+CHR(2)+CHR(256)+CHR(45)+CHR(0)+CHR(1)+CODIGO &&imprime la etiqueta de 12 caracteres
SKIP
IF EOF()
IF WCONTADOR=3 .AND. .NOT. EOF()
@ N+2,0 SAY "P"
@ N+2,7 SAY TABLA3[Z-3]+" "+TABLA4[Z-3]+" "+TABLA3[Z-2]+" "+TABLA4[Z-2]+" "+TABLA3[Z-1]+" "+TABLA4[Z-1]
@ N+3,3 SAY WW_CENTRO+" "+WW_CENTRO+" "+WW_CENTRO
ENDIF
IF WCONTADOR=2
@ N+2,0 SAY "P"
@ N+2,7 SAY TABLA3[Z-3]+" "+TABLA4[Z-3]+" "+TABLA3[Z-2]+" "+TABLA4[Z-2]
@ N+3,3 SAY WW_CENTRO+" "+WW_CENTRO
ENDIF
IF WCONTADOR=1
@ N+2,0 SAY "P"
@ N+2,7 SAY TABLA3[Z-3]+" "+TABLA4[Z-3]
@ N+3,3 SAY WW_CENTRO
ENDIF
ENDIF
X=X+52
IF N > 55 .AND. X > 106 &&CAMBIO DE PAGINA
IF .NOT. EOF()
@ N,X SAY CHR(27)+CHR(64) &&INICIALIZA IMPRESORA
@ N+2,0 SAY "P"
@ N+2,7 SAY TABLA3[Z-3]+TABLA4[Z-3]+" "+TABLA3[Z-2]+TABLA4[Z-2]+" "+TABLA3[Z-1]+TABLA4[Z-1]
@ N+3,3 SAY WW_CENTRO+" "+WW_CENTRO+" "+WW_CENTRO
@ 0,0 SAY CHR(27)+CHR(64) &&INICIALIZA IMPRESORA
@ 0,50 SAY "PAGINA: "+ALLTRIM(STR(INT(WPAGINA1)))
WPAGINA1=WPAGINA1+1
N=4
X=2
DO CABECERA
ENDIF
ENDIF
IF X > 106 &&SALTO DE LINEA
N=N+2
@ N,0 SAY "P"
@ N,7 SAY TABLA3[Z-3]+TABLA4[Z-3]+" "+TABLA3[Z-2]+TABLA4[Z-2]+" "+TABLA3[Z-1]+TABLA4[Z-1]
N=N+1
@ N,3 SAY WW_CENTRO+" "+WW_CENTRO+" "+WW_CENTRO
N=N+2
@ N,0 SAY CHR(27)+CHR(50)
@ N,10 SAY ""
N=N+1
@ N,0 SAY CHR(27)+CHR(50)
@ N,10 SAY ""
N=N+1
@ N-1,0 SAY CHR(27)+CHR(64)
X=2
DO CABECERA
ENDIF
ENDDO
CLOSE DATABASES
SET PRINTER TO
SET DEVICE TO SCREEN
RUN DOSPrint.EXE /EURO TEXTO.TXT
RETURN
***************************
PROCEDURE CABECERA
*@ N-1,X-2 SAY "ME" &&PONE LETRA MUY PEQUE¥A
*@ N-1,X-2 SAY "M" &&PONE LETRA PEQUE¥A
@ N-1,X-2 SAY "w1" &&PONE LETRA GRANDE
IF Z <= WRE
@ N-1,X SAY TABLA1[Z]+" "+STR(TABLA2[Z])+CHR(128)
WCONTADOR=1
ENDIF
Z=Z+1
IF Z <= WRE
@ N-1,X+29 SAY TABLA1[Z]+" "+STR(TABLA2[Z])+CHR(128)
WCONTADOR=2
ENDIF
Z=Z+1
IF Z <= WRE
@ N-1,X+58 SAY TABLA1[Z]+" "+STR(TABLA2[Z])+CHR(128)
WCONTADOR=3
ENDIF
Z=Z+1
@ N-1,X+160 SAY CHR(27)+CHR(64)
RETURN
**********************************