¿Como deshabilitar la ventana Abrir para la Preview de un Reporte en VFP?

Estimados, he estado haciendo un programa en Visual Fox Pro. De un formulario, tengo un comando que indica la Preview de un  Reporte, la cual es "REPORT FORM "C:\Facturacion\report3.frx" PREVIEW". El problema es el siguiente, cuando doy click al comando, en lugar de abrirme la Preview del Report, me abre la ventana "Abrir" para que seleccione el archivo, y luego de elegirlo y dalre aceptar, el Preview se abre. Definitivamente debe haber un error en el llamado al reporte, he intentado solo con el nombre del reporte y otras combinaciones mas sin resultados positivos hasta el momento. Quiero eliminar ese paso de tener que seleccionar el archivo cada vez que se selecciona el comando para ver la Preview, es tedioso.

Desde ya muy agradecido, quedo al aguardo de sus respuestas.

Cordiales Saludos

1 Respuesta

Respuesta
1

Un placer! Disculpa la tardanza!

Si el cuadro de dialogo "Abrir" se ejecuta... posiblemente sea una línea de código de más... ¿cómo es el código completo con el que llamas al reporte?

Ahora.. ¿el reporte esta anidado a tu proyecto? Es decir... abrís la pestaña forms y en la sección de los reportes desplegables... (¿en tu administrador de proyectos) lo podes visualizar y ponerlo en modo de diseño? ¿O es un reporte libre? ¿Lo tienes en la misma carpeta del proyecto?

Esa podría ser una causa.. si VFP no lo encuentra en tu directorio establecido de arranque... posiblemente, para no enviar error, indique que digas vos manualmente, donde esta ubicado.

Espero tus consideraciones para ayudarte. Avisame.

Estimado Ravenn, desde ya estoy muy agradecido por tu respuesta, me sorprende que desde Nicaragua a Argentina me den una mano, GRACIAS!

Procedo a responder entre líneas para que sea lo más claro posible.

---Si el cuadro de dialogo "Abrir" se ejecuta... posiblemente sea una línea de código de más... ¿cómo es el código completo con el que llamas al reporte?---

El código no es más que el siguiente:

REPORT FORM "C:\Facturacion modificada\report3.frx" PREVIEW

---Ahora.. ¿el reporte esta anidado a tu proyecto? Es decir... abrís la pestaña forms y en la sección de los reportes desplegables... (¿en tu administrador de proyectos) lo podes visualizar y ponerlo en modo de diseño? ¿O es un reporte libre? ¿Lo tienes en la misma carpeta del proyecto?---

Puedo visualizar el Reporte en mi proyecto. Si Señor, el Reporte esta añadido al proyecto.

Quedando al aguardo de tu respuesta, te saludo muy atentamente.

Horacio

Mmm... es realmente extraño que abra el cuadro de dialogo si no se esta invocando. Como tenes el SET DEFAULT para el directorio de tu proyecto?

Mientras me respondes... aquí va una solución que a mi me ha servido muchísimo.

1 - Anda a la pestaña CODE del administrador de proyectos y crea una rutina o programa .prg con el nombre generarreporte, y debe quedar guardado en tu carpeta proyecto (generarreporte. Prg). En esa rutina, coloca un código como este:

**============**

**Vista previa**
**============**
PROCEDURE vistaprevia

**--
SELECT mitabla

**--Crear form vacio de vista previa--**
oPForm = CREATEOBJECT('printpreview')
oPform.visible = .t. && open printpreview form
**--//

**Llamamos el reporte
REPORT FORM "reporte1.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 = "Reporte de datos | "
Movable = .T.
TitleBar = 0
WindowState = 2
SizeBox = .F.
Name = "printpreview"
Visible = .T.
ENDDEFINE

**--Fin del codigo. 

2 - Cambia donde dice "SELECT mi tabla" por el nombre de la tabla o cursor que contiene los datos que se envían al reporte, es decir.. de donde se alimenta el reporte.

Cambia en la línea donde dice: REPORT FORM "reporte1.frx"... escribí en lugar de reporte1 el nombre de tu reporte siempre entre "" comillas dobles. Guarda los cambios.

3 - Anda ahora al form desde donde llamas al reporte y en modo de diseño, agrega la tabla que carga tu reporte (si es un cursor temporal, no es necesario este paso) en el entorno de datos.

4 - Codifica: en el evento INIT de tu FORMULARIO, coloca un código como este

**--Evitamos conflictos de red
CURSORSETPROP("Buffering", 5, "mitabla")
**--//

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

Cambiando siempre mitabla por el nombre de tu tabla. La segunda línea es para activar la rutina generarreporte que recién creaste y que se pueda abrir con todas las demás que tengas disponibles en esa sesión de datos.

5 - Anda a la pestaña DATA de las propiedades de tu formulario, y coloca las propiedades siguientes así: Buffermode = 2, Datasession = 2.

6 - Por ultimo, coloca esta línea de código, tal cual, en algún botón desde donde haces click para llamar al reporte. Unicamente esta línea debe ir en el evento click del botón... más nada:

**--Generamos la vista previa del reporte
**--en un form aparte. Se puede dejar en
**--la pantalla principal pero es mas presentable
**--aparte.
**--Se llama al procedimiento VISTAPREVIA que esta
**--en la rutina generarreporte
DO vistaprevia IN generarreporte
**--//

Y listo. Guarda los cambios y ejecuta. Cuando hagas click.. el reporte debe abrirse sin problemas y en una ventana maximizada aparte. Es más cómodo, rápido, practico y sencillo...! Eso debe solucionar el problema y es una buena opción para programar. Si te da problemas o algo... avisame y con mucho gusto te ayudo a resolver. Es importante que te asegures que el directorio de arranque de tu aplicación este correctamente declarado y que VFP al iniciar en un .exe sepa donde ir a buscar tus ficheros.

Estoy a la orden... ! Avisame como va! Espero tus comentarios.

Desde Managua, Nicaragua!

Ravenn!

PD: tengo algunos amigos que viven hasta allá en Argentina... Argentinos todos, personas muy amables! Un abrazo!

Estimado, no me alcanza para agradecerte todo esto. Pero lamento informate algunas malas noticias, mis conocimientos creo no son los suficientes para poder llevar a cabo esos códigos que me indicaste. Aun así te quiero comentar un detalle:

Mi programa esta funcionando de la siguiente manera:

-Un formulario y un proyecto (nada más!), es simplemente un formulario donde se completan datos y se envían al reporte para su impresión. No se almacenan más que en variables. No hay tablas, no se guardan.

-Pude corregir el error mencionado de la siguiente forma: en el Load del formulario coloque "USE c:\facturacion\foxuser.dbf EXCLUSIVE" y cada vez que corría el formulario y daba click en el botón para la PREVIEW del reporte, este aparecía, sin problemas.

Aun así, generado el archivo .exe, al abrirlo y utilizarlo, cuando se da click para la PREVIEW del reporte, el problema no solo persiste, sino que un cartel indica que el archivo ya esta en uso.

Cabe mencionar, además, que para lograr que el archivo.exe funcione correctamente, debió crearse un programa con el siguiente código:

SET TALK OFF
CLEAR
SET DEFAULT TO "C:\Facturacion modificada"
DO FORM miformulario
READ EVENTS

Exceptuando el hecho que cuando se busca ver la PREVIEW del Reporte abre la ventana para seleccionarla, todo lo demás funciona correctamente. Incluso si se selecciona el Reporte en esa ventana, este funciona a la perfección.

Me siento algo molesto ya con este tema, de no ser que sea un error importante el que estoy cometiendo, no quiero resultar una molestia.

Estoy muy agradecido al respecto.

Cordiales saludos mi amigo de Managua!

Horacio

No te preocupes que no es ninguna molestia. Al contrario... con mucho gusto siempre aportar algo a la comunidad de VFP.

Mencionas que no usas tablas. ¿Las variables son de alcance publico? ¿O locales?

Si quieres, escríbeme al correo

[email protected]

Y vemos el proyecto rapidito para analizar mejor donde esta el problema. Avisame!

¡Gracias! 10 puntos!!!!

Ravenn, lamento molestarte, he intentado enviarte el correo pero me lo devuelve como si la casilla fuese incorrecta.

Saludos

Ohh si! Mil disculpas! Se me fue una por hehe la dirección correcta es

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas