Usar Consultas SQL para reporte

Molestándote una vez mas. La última vez que me ayudaste, incluiste comandos de SQL, voy a continuar mi proyecto de Caja de Ahorro y comenzar otro para imprimir los cheques de la oficina, específicamente la consulta es:

De una tabla, deseo recuperar algunos registros para imprimir mi reporte, por ejemplo:

De la tabla de movimientos, seleccionar todos los registros del socio "GDL11" de los meses de Enero y Febrero, agrupados por mes y en orden de fecha... Una vez hecha esta selección, mandar a imprimir el reporte.

1 respuesta

Respuesta
1

¿Cómo has andado? Ahh no es ninguna molestia! Al contrario! Gracias por consultar.

Lo que necesitas es fácil.

Para 'recuperar' los datos de la tabla, esta bien que uses un cursor temporal. Te felicito! :):) Va así:

Si quieres obtener en la consulta "TODOS" los campos del registro, haces así:

SELECT * FROM movimientos WHERE campox = algunacondicion INTO CURSOR temp1

Y listo. El * 'regresa' todos los campos en la consulta y con WHERE estableces alguna condición si quieres, que se aplique para obtener los registros. Por ejemplo... quiero obtener todos los socios que se llamen "Andres" mediante el campo nombremat

SELECT * FROM movimientos WHERE movimientos.nombremat = "Andres" INTO CURSOR temp1

Ves! Si solo quieres obtener algunos campos específicos, sustituí el '*' por los nombres de los campos

SELECT nombre, apepat, edad FROM movimientos WHERE....

Ves! :)

Una forma 'aceptable' de generar reportes por medio de cursores es el uso de funciones .prg!

Proba así:

Crea un reporte nuevo, sin usar el asistente si! Desde cero! El reporte se debe llamar: 'mireporte1' (sin comillas). En el diseñador de reportes, crea algunos campos (textos) y asígnales los nombres de los campos del cursor, los cuales son los mismos nombres de los campos de las tablas, pero referenciados al cursor:

Si en la tabla se llama "movimientos.codigosocio", en el campo (text), donde escribís la expresión, coloca "temp1.codigosocio" (sin comillas). Y así arma tu reporte. Guarda los cambios. Asegurate de referenciar bien los campos al cursor. Esto es vital. No agregues nada al "dataenviroment" del reporte y no hagas mas referencia que al cursor! Nada que ver con la tabla ok!

En tu form, Crea una consulta.. la que tu quieras! Supongamos que la guardas en el cursor "temp1". Así mismo, coloca un botón en el form que sea para "imprimir" y en el evento click coloca esto:

**--

**--
DO imprimir IN generarreporte
**--//

Coloca otro botón que sea para "vista previa" y coloca este código:

**--

**--
DO vistaprevia IN generarreporte
**--/

En el evento INIT() de form, coloca este código:

**--Activamos rutinas
SET PROCEDURE TO generarreporte ADDITIVE
**--//

Anda al administrador de proyectos y en la pestaña "code" selecciona donde dice programs y dale click en "new" para crear una función se que se llame "generarreporte.prg".

En ella, coloca este código:

**================**
**Imprimir reporte**
**================**
PROCEDURE imprimir
**--
SELECT temp1
**Mandamos el reporte a la impresora
REPORT FORM "mireporte1.frx" TO PRINTER PROMPT NOCONSOLE1
**--//
ENDPROC
**==//
**============**
**Vista previa**
**============**
PROCEDURE vistaprevia
**--
SELECT temp1
**--Crear form vacío de vista previa--**
oPForm = CREATEOBJECT('printpreview')
oPform.visible = .t. && open printpreview form
**--//
**Llamamos el reporte
REPORT FORM "mireporte1.frx" PREVIEW WINDOW printpreview IN WINDOW printpreview NOCONSOLE
**--//
ENDPROC
**==//
**--Definimos clase de form vista previa
DEFINE CLASS printpreview AS form
ScaleMode = 3
Top = 0
Left = 0
Height = 454
Width = 641
ShowWindow = 2
Closable = .T.
DoCreate = .T.
Caption = "Renter_ Calc - Ingresos fijos | Período completo"
Movable = .T.
TitleBar = 0
WindowState = 2
SizeBox = .F.
Name = "printpreview"
Visible = .T.

ENDDEFINE

Guarda los cambios y ejecuta el form. Tendrás un botón para vista previa y otro para enviar

A imprimir directamente!

Bien... proba y me avisas! Si te da algún problema, hacérmelo saber para colaborarte!

Con mucho gusto!

Desde Managua, Nicaragua!

Ravenn :D :D :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas