Impresión de Búsqueda de Reportes Visual Fox Pro
Después de un tiempo de que mi sistema esta trabajando ha surgido un detalle realizan búsquedas en base a nosmbres o apellidos por tener un ejemplo y quisiera saber si es posible enviar a imprimir un reporte por de las búsquedas arojadas en el grid si la búsqueda arrojo a 5 personas que con solo un botón se envíe a impresión los reportes de esas 5 personas espero su ayuda y agradezco de ante mano...
3 respuestas
El reporte usa los datos de una tabla abierta para imprimir; la información que muestras en el grid también obtiene datos de una tabla, ya sea que sea un Select - SQL o una tala filtrada, por lo tanto puedes hacer el Reporte perfectamente con los datos del grid; solo tienes que hacer referencia a la misma tabla o cursor que tengas activo.
1. Seleccionas la tabla o cursor que tengas activo.
2. Usas Report Form <NombreDelReporte>
Ten presente que el Reporte si se refiere a los datos de la tabla (por ej. así: Tabla. Campo) y tu Cursor o Tabla (del grid) tiene un nombre diferente te dará error.
Ok deja instalo nuevamente el Visual Fox y reviso la configuración que tengo hecha para poder intentar realizar la configuración del botón que necesito más adelante seguiré molestándote...
Hola perdón por el retrazo demasiado trabajo te comento este es el comando que ocupo en el botón para visualizar un reporte y enviarlo a imprimir...
m.cSocio = thisform.grdPlanilla.column1.text1.Value
Select Planilla
Set order to Socio
Seek m.cSocio
If found()
Select Planilla
m.cSocio = Planilla.Socio
report form C:\Recursos_Humanos\informe_interno.frx TO PRINTER PROMPT PREVIEW for m.cSocio=Planilla.Socio
endif
Ahora lo que necesito es situar un botón por debajo de este que solo me envíe a imprimir con este informe ya que se manejan dos lo que aparezca en el grdplanilla cuando buscan un nombre que arroja tres opciones no se si me explico bien
Si deseas ver en tu reporte lo mismo que ves en el grid usa el mismo condicional que usas para mostrar el grid; me muestras que usas en REPORT FORM el condicional:
.. For m.cSocio=Planilla.Socio
de frente a que haces ésta consulta no debe ser el mismo condicional que usas para el grid; en todo caso muéstrame el procedimiento que usas para mostrar datos en el grid y podría darte más ayuda.
Uso esto..
En Text1 colocan el criterio de busqueda y aparece en el grid y para ser mas precisos has de cuenta que si busco mi nombre y aparecen dos mas quiero enviar a imprimir los tres de golpe no abrir uno a uno y tener que enviarlos a imprimir
Puede que uses para mostrar datos en el Grid ya sea el comando SET FILTER TO o bien SELECT SQL, en cualquier caso en ámbos; aplicas un filtro sobre una tabla para que solo muestre la información que deseas sobre la grilla.
En ese caso no uses ningún condicional en el comando REPORT FORM, es decir:
REPORT FORM C:\Recursos_Humanos\informe_interno.frx PREVIEW
NOTA: Por otro lado si usas PREVIEW (mostrar por pantalla), anulas TO PRINTER PROMPT (Imprimir previo a consultar en que impresora).
Dime que resultados te arroja sin el condicional y si no es lo que necesitas; muestrame el comando o procedimiento que usas para mostrar datos en el grid.
Realice el botón nuevo omitiendo la información de la vista previa y me genera la impresión sin problemas solo que de la búsqueda realizada solo envía a la primera persona no a las que aparecen
Necesito ver que comandos usas en el botón y el comando que usas para filtrar la grilla; es decir lo que tienes posiblmente en el VALID del objeto Text1.
Es idéntica a la anterior solo que no le coloque el Preview y para filtrar la grilla no ocupo valid si no este
Por lo que veo usas el comando SELECT SQL para generar la consulta que resulta en un cursor de nombre Planilla1; entonces en el botón debes primero indicar ese mismo cursor previo al comando REPORT FORM... es decir..
Select Planilla1 REPORT FORM C:\Recursos_Humanos\informe_interno.frx PREVIEW
En resumen: El Reporte lo que hace es mostrarte todos los registros que se encuentren visibles en la tabla, si en la tabla cursor se ven 3 el reporte te mostrara 3.
Me sigue enviando solo una de las 10 personas por así decirlo que deben enviarse te muestro como lo tengo y me dirás si estoy mal
La tabla cursor que creaste y que muestras en el grid que se llama "Planilla1" seguirá abierta hasta que la cierres, lo único que debes poner en el click del botón es:
Select Planilla1 REPORT FORM C:\Recursos_Humanos\informe_interno.frx TO PRINT PROMPT
exactamente así.
Hice las correcciones que me diste y me envía todos los registros a imprimir no solo los que se muentran tras la búsqueda
Puede entonces ser que dentro del REPORT haga referecia a la tabla Planilla y no a Planilla1... haz MODIFY REPORT <Nombre del Reporte> y mira dentro de los campos que debe estar el campo por ejemplo Planilla. Socio cuando debería decir Planilla1. Socio o mejor sin el nombre de la tabla, es decir... solo SOCIO.
¿Se entiende?
Un favor no se si puedas ser un poco mas detallado entre el trabajo no se si tengo las ideas revueltas lo intente según mi razonamiento pero me sigue enviando todo a imprimir se que me falta algo pero no se que es perdón por dejarte todo el trabajo a ti
Te adjunto un ejemplo para que puedas darte cuenta lo que te digo...
Cuando le das dole clic al campo que en el ejemplo se llama detalle se muestra una ventana como la que ves más al frente y donde se puede apreciar que el campo detalle está precedido por el nombre de la tabla llamada en éste caso "CompDeta".
Lo que debes hacer es si tienes algo así en tu reporte, quitale el nombre de la tabla que sin dudas será Planilla o también puedes solo modificar el nombre por Planilla1.
Una u otra opción debes hacerla en todos los campos del Reporte.
Si necesitas mi ayuda no puedes estar consultándome cada 10 días o más... del mismo modo que me tomo el tiempo de responderte casi inmediatamente te solicito tengas la misma consideración.
Lamento mucho la poca consideración de mi parte y te agradezco infinitamente la ayuda que me brindas esta corrección la estoy haciendo en mis ratos libres ya que tengo otro trabajo pendiente fuera de la programación por eso me tardo en revisar y con respecto a tu observación hice un nuevo reporte con la modificación que me sugeriste y me sigue enviando todo a imprimir no solo la búsqueda que se realiza
Muéstrame algo similar a mi ejemplo visual como está ajustado el reporte que tienes.
Para que comprendas como funciona decirte que un reporte muestra todos los registros existentes en la tabla que esté activa; por lo tanto si quieres enviar una lista seleccionada hacia el reporte debes primero; (una de las 2 opciones):
- Filtar la tabla que enviaras al reporte.
- Usar un Select SQL para crear la tabla cursor (temporal) que mostrarás en el reporte.
No existe manera que no esté resuelto tu inconveniente.
Mira, te propongo lo siguiente; si no logras resolver el problema con lo que te explico, descargate e instala un programa llamado AnyDesk que servirá para hacer un control remoto, y me conecto y veo exactamente como tienes hecho el procedimiento e intento resolverlo de una vez. Contacto si así lo deseas a mi cuenta "sysgen . abel (arroba) gmail . com"
Ok te aviso ya que la conexión esta pésima para que puedas revisar y auxiliarme te agradezco nuevamente y estamos pendientes
Ok espero se estabilice la conexión para subirlo al correo y te lo envió y ya me comentas el error que tuve que se que lo tengo por que como dices debe de funcionar con la corrección
Reemplaza el código del botón denominado "Vista Previa reporte interno" por lo siguiente:
m.cSocio = thisform.grdPlanilla.column1.text1.Value Select 0 Select * From Planilla a ; Where cSocio=a.Socio ; Order by a.Socio ; Into Cursor csrPlanilla If _tally>0 ** Si quieres una vista previa "cambia" TO PRINTER PROMPT por PREVIEW report form C:\Recursos_Humanos\informe_interno.frx TO PRINTER PROMPT endif
Por otro lado debes de haber quitado el nombre de la tabla en el reporte como te e indicado, dejando solo el nombre del campo para que ésto funcione.
Ok voy a revisarlo aunque esta modificación es para el reporte cuando lo seleccionas en la búsqueda o para la impresión de la búsqueda en un reporte en específico no me queda claro
No entiendo lo que dices!. Ese método de crear una tabla cursor podrías usarlo para mostrar datos en la grilla al mismo tiempo, solo deberías cambiar la propiedad RecordSource del objeto grilla por csrPlanilla.
El código que me enviaste trabaja mucho mejor que el mio te agradezco mucho solo que no salimos completamente de contexto ya que mi problema se sitúa en que cuando se realiza la búsqueda de un socio y esta búsqueda arroja por decirlo así un resultado de 10 socios con ese mismo nombre quisiera tener un botón para enviar a imprimir ese resultado de una sola vez con un reporte interno no seleccionando uno a uno me explico...
Es que ese código que te envíe debería, insisto, debería mostrarte lo mismo que ves en el grid, es edcir todo según el cliente. Ya tendría que estar resuelto el problema que tienes, ya no entiendo en verdad por que no te da resultados. Solo me queda hacer una conexión remota y que me expliques correctamente el problema por que con lo que vi y explique estaría resuelto o al menos eso debería ser así.
- Compartir respuesta
I. Hola, por mi parte he visto estos comandos.
** Para impresora
EPORT FORM informe_1 TO PRINTER PROMPT NOCONSOLE
** Para Vista Previa
REPORT FORM informe_1 PREVIEW WINDOWS
Desconozco VisualFox en gran medida pero puedo ir buscando información para ver distintas opciones.
http://programacion.yoreparo.com/programacion/como-imprimir-un-registro-en-un-reporte-de-visual-foxpro-9-t1096295.html
También imagino que podrían intentar utilizarse macros pero tendríaque confirmarlo otro compañero.
- Compartir respuesta