Ejemplo de codigo de reportes
Amigos necesito un ejemplo de un reporte hecho en codigo con las instrucciones @say y @col
SET DEFAULT TO C:DbAdm2009
CLOSE DATABASES ALL
OPEN DATABASE data1.dbc SHARED
SET CURRENCY TO ""
PUBLIC tyMonto, tlDolares
PUBLIC lyEntero, lyCentavos, lnNumeroBloques, lnPrimerDigito, lnSegundoDigito
PUBLIC lnTercerDigito, lcBloque, lnBloqueCero, lcLetra
LOCAL LcCCF
LOCAL LcValorIva
LOCAL LcTotalConIva
LcCCF=.T.
LOCAL LcDoc
LcDoc="0146"
procesos para convertir de a letras el total
*SET PROCEDURE TO C:SystAdm2009programasnumtoletras ADDITIVE
proceso para cambiar formato de fecha.
*SET PROCEDURE TO C:SystAdm2009programasfecha ADDITIVE (mas abajo llamo a la funcion con CadFecha) en este caso no esta incluida la funcion al igual que la de convertir el monto numerico a letras.
SELECT idtrans AS NroDocumento,;
cantidad AS qty,;
codprod AS barra,;
descripcion AS description,;
nombre AS theclient,;
direccion AS direcc,;
registro AS NroReg,;
giro AS Gir,;
idtrans AS NroFactura,;
tblejemplo.precio AS price,;
total AS mitotal;
FROM tblejemplo,tblartiulos,tblclientes;
WHERE tblejemplo.idproducto=tblartiulos.codprod;
AND tblejemplo.idcliente=tblclientes.codcliente;
AND tblejemplo.idtrans=LcDoc;
INTO CURSOR MyCursor1
SELECT MyCursor1
GO TOP IN MyCursor1
SET PRINTER ON
*SET PRINTER TO LPT1
SET DEVICE TO PRINTER
SET CONSOLE OFF
SET DEVICE TO SCREEN
LOCAL LcTipoLetra
LcTipoLetra="FONT 'Courier',8"
@12,15 SAY ALLTRIM(theclient)&LcTipoLetra
@14,15 SAY ALLTRIM(SUBSTR(direcc, 1, 51))&LcTipoLetra
@15,15 SAY ALLTRIM(SUBSTR(direcc,52))&LcTipoLetra
@14,100 SAY ALLTRIM(SUBSTR(Gir,1, 44))&LcTipoLetra
@15,100 SAY ALLTRIM(SUBSTR(Gir,45))&LcTipoLetra
@12,100 SAY ALLTRIM(NroReg)&LcTipoLetra
@18,13 SAY CadFecha(DATE(),1)&LcTipoLetra
@18,100 SAY "Fact No.: " + ALLTRIM(NroDocumento)&LcTipoLetra
*LOCAL i
*i=22
LINENUMB = 22
*DO WHILE !EOF( )
SCAN
@LINENUMB,4 SAY STR(qty)&LcTipoLetra
@LINENUMB,20 SAY ALLTRIM(description)&LcTipoLetra
@LINENUMB,98 SAY TRANSFORM(price, '@$.99@B')&LcTipoLetra
@LINENUMB,130 SAY TRANSFORM(mitotal, '@$.99@B')&LcTipoLetra
*i=i+1.2
LINENUMB = LINENUMB + 1
*IF i > 10 THEN
* EJECT
*ELSE
*ENDIF
IF LINENUMB > 31 THEN
*EJECT
=MESSAGEBOX("SALTO DE PAGINA")
LINENUMB = 22
ELSE
*=MESSAGEBOX("Aun hay espacio en el area de detalle")
ENDIF
*SKIP IN MyCursor1
*ENDDO
ENDSCAN
*EJECT
USE IN MyCursor1
SELECT SUM(total)AS eltotal FROM tblejemplo WHERE idtrans=LcDoc INTO CURSOR CurTotal
SELECT CurTotal
LcTotalConIva=ROUND(eltotal*1.13,2)
* @35,23 SAY MostrarNumerosEnLetras(LcTotalConIva)&LcTipoLetra
* @34,130 SAY TRANSFORM(eltotal,'@$.99@B')&LcTipoLetra
* @36,130 SAY IIF(LcCCF=.T.,TRANSFORM(eltotal*0.13,'@$.99@B'), "")&LcTipoLetra
* @38,130 SAY TRANSFORM(LcTotalConIva,'@$.99@B')&LcTipoLetra
@51,23 SAY MostrarNumerosEnLetras(LcTotalConIva)&LcTipoLetra
@50,130 SAY TRANSFORM(eltotal,'@$.99@B')&LcTipoLetra
@52,130 SAY IIF(LcCCF=.T.,TRANSFORM(eltotal*0.13,'@$.99@B'), "")&LcTipoLetra
@54,130 SAY TRANSFORM(LcTotalConIva,'@$.99@B')&LcTipoLetra
USE IN CurTotal
SET PRINTER OFF
*SET PRINTER TO LPT1
SET DEVICE TO SCREEN
SET CONSOLE ON
Impresion de una factura en formato prediseñado
Me avisas si por casualidad al momento de ejecutarlo para imprimir en la cola de impresion te muestra mas de 1 documento.
Hay 3 tablas relacionadas.
CLOSE DATABASES ALL
OPEN DATABASE data1.dbc SHARED
SET CURRENCY TO ""
PUBLIC tyMonto, tlDolares
PUBLIC lyEntero, lyCentavos, lnNumeroBloques, lnPrimerDigito, lnSegundoDigito
PUBLIC lnTercerDigito, lcBloque, lnBloqueCero, lcLetra
LOCAL LcCCF
LOCAL LcValorIva
LOCAL LcTotalConIva
LcCCF=.T.
LOCAL LcDoc
LcDoc="0146"
procesos para convertir de a letras el total
*SET PROCEDURE TO C:SystAdm2009programasnumtoletras ADDITIVE
proceso para cambiar formato de fecha.
*SET PROCEDURE TO C:SystAdm2009programasfecha ADDITIVE (mas abajo llamo a la funcion con CadFecha) en este caso no esta incluida la funcion al igual que la de convertir el monto numerico a letras.
SELECT idtrans AS NroDocumento,;
cantidad AS qty,;
codprod AS barra,;
descripcion AS description,;
nombre AS theclient,;
direccion AS direcc,;
registro AS NroReg,;
giro AS Gir,;
idtrans AS NroFactura,;
tblejemplo.precio AS price,;
total AS mitotal;
FROM tblejemplo,tblartiulos,tblclientes;
WHERE tblejemplo.idproducto=tblartiulos.codprod;
AND tblejemplo.idcliente=tblclientes.codcliente;
AND tblejemplo.idtrans=LcDoc;
INTO CURSOR MyCursor1
SELECT MyCursor1
GO TOP IN MyCursor1
SET PRINTER ON
*SET PRINTER TO LPT1
SET DEVICE TO PRINTER
SET CONSOLE OFF
SET DEVICE TO SCREEN
LOCAL LcTipoLetra
LcTipoLetra="FONT 'Courier',8"
@12,15 SAY ALLTRIM(theclient)&LcTipoLetra
@14,15 SAY ALLTRIM(SUBSTR(direcc, 1, 51))&LcTipoLetra
@15,15 SAY ALLTRIM(SUBSTR(direcc,52))&LcTipoLetra
@14,100 SAY ALLTRIM(SUBSTR(Gir,1, 44))&LcTipoLetra
@15,100 SAY ALLTRIM(SUBSTR(Gir,45))&LcTipoLetra
@12,100 SAY ALLTRIM(NroReg)&LcTipoLetra
@18,13 SAY CadFecha(DATE(),1)&LcTipoLetra
@18,100 SAY "Fact No.: " + ALLTRIM(NroDocumento)&LcTipoLetra
*LOCAL i
*i=22
LINENUMB = 22
*DO WHILE !EOF( )
SCAN
@LINENUMB,4 SAY STR(qty)&LcTipoLetra
@LINENUMB,20 SAY ALLTRIM(description)&LcTipoLetra
@LINENUMB,98 SAY TRANSFORM(price, '@$.99@B')&LcTipoLetra
@LINENUMB,130 SAY TRANSFORM(mitotal, '@$.99@B')&LcTipoLetra
*i=i+1.2
LINENUMB = LINENUMB + 1
*IF i > 10 THEN
* EJECT
*ELSE
*ENDIF
IF LINENUMB > 31 THEN
*EJECT
=MESSAGEBOX("SALTO DE PAGINA")
LINENUMB = 22
ELSE
*=MESSAGEBOX("Aun hay espacio en el area de detalle")
ENDIF
*SKIP IN MyCursor1
*ENDDO
ENDSCAN
*EJECT
USE IN MyCursor1
SELECT SUM(total)AS eltotal FROM tblejemplo WHERE idtrans=LcDoc INTO CURSOR CurTotal
SELECT CurTotal
LcTotalConIva=ROUND(eltotal*1.13,2)
* @35,23 SAY MostrarNumerosEnLetras(LcTotalConIva)&LcTipoLetra
* @34,130 SAY TRANSFORM(eltotal,'@$.99@B')&LcTipoLetra
* @36,130 SAY IIF(LcCCF=.T.,TRANSFORM(eltotal*0.13,'@$.99@B'), "")&LcTipoLetra
* @38,130 SAY TRANSFORM(LcTotalConIva,'@$.99@B')&LcTipoLetra
@51,23 SAY MostrarNumerosEnLetras(LcTotalConIva)&LcTipoLetra
@50,130 SAY TRANSFORM(eltotal,'@$.99@B')&LcTipoLetra
@52,130 SAY IIF(LcCCF=.T.,TRANSFORM(eltotal*0.13,'@$.99@B'), "")&LcTipoLetra
@54,130 SAY TRANSFORM(LcTotalConIva,'@$.99@B')&LcTipoLetra
USE IN CurTotal
SET PRINTER OFF
*SET PRINTER TO LPT1
SET DEVICE TO SCREEN
SET CONSOLE ON
Impresion de una factura en formato prediseñado
Me avisas si por casualidad al momento de ejecutarlo para imprimir en la cola de impresion te muestra mas de 1 documento.
Hay 3 tablas relacionadas.