Informes vfp 6

Hola a todos.
Bueno, mi problema es el siguiente. Tengo más de mil registros en una tabla. En un formulario mustros dichos registros, pero lo que necesito es que cuando encuentre el registro que necesito, pinche un botón y me muestre el informe de solo ese registro. ¿Cómo lo hago?.
Lo otro, es posible crear un informe con datos sacados de un formulario, es decir, en el formulario, relleno los cuadros de texto, ¿luego pinche un botón y muestre en un informe lo que se escribió en el formulario?. ¿Cómo lo hago?.
Ojala puedan ayudar. Es urgente.
Chau!
4

4 respuestas

1
Respuesta de
Que tal, lo que debes de poner es lo siguiente:
Supongamos que la tabla de mil registros es de clientes (catálogo) y que tiene un campo con volares únicos por ejemplo la clave del cliente, bueno...
En el botón de imprimir reporte, en el método click, pones:
public valor1
valor1=THISFORM.CONTROL_DEL_FORMULARIO_CON_EL_VALOR_UNICO.VALUE
Report Form tu_reporte FOR tabla_de_mil_registros.clave_del_cliente=valor1
Release valor1
Esta instrucción lo que hará sera de reportearte solo los registros que complan con la sentencia FOR del comando REPORT FORM, ahora modifica el reporte que ya tienes y ponle en el menu reporte (en el diseñador de reportes), la opción de sesión privada de datos, para que no te mueva el puntero de la tabla del formulario.
Espero te sirva.
Hola. Te agradezco un montón por haber acudido a salvarme.
Abusando un poco de tu experiencia, me gustaría si por favor me indicaras el código para un botón BUSCAR y que el resultado se muestre en un grilla.
Te lo agradecería mucho.
Chau!
Haber si entendí, esta es otra pregunta que aunque no es exactamente de lo mismo, si tiene que ver con lo que me preguntabas antes ¿?
Vamos a suponer que tienes en un formulario un objeto tipo textbox donde el usuario pone lo que quieres que busque y se llama BÚSQUEDA, ok, ahora tienes un botón buscar, en el evento click de ese botón pondrías lo siguiente:
select tabla_en_la_que_se_buscara
seek thisform.BUSQUEDA.value
if Found()
thisform.grid1.refresh
Else
=messagebox("Valor no existe")
Thisform. BÚSQUEDA. Setfocus
Endif
Si te fijaste en la linea thisform.grid1.refresh, lo único que hago es refrescar el grid que en este caso se llama grid1, ¿por qué?, bueno la tabla en la que se va a buscar debe ser la misma que tiene el grid1, cuando mueves el puntero con el seek se actualiza automáticamente el grid, OJO esa tabla debe de estar indexada por un campo donde aplicar el seek y claro el valor que te dan debe corresponder a lo que esta en el indice, es decir si tu campo indexado es la clave del cliente y es tipo numérico, que el valor que te den en BÚSQUEDA sea numérico también.
Espero te sirva.
Añade un comentario a esta respuesta
1
Respuesta de
Para la solución de ambos casos es necesario que mandes el registro que quieres mostrar a una tabla temporal y de ahí mandes el reporte, ya que para que el reporteador funcione es necesario que tenga por lo menos un registro.
Hola, nuevamente.
Como hago eso que me indicas.
Lo puedes hacer por medio de "cursores", que se realizan con la instrucción SELECT:
SELECT * from <tabla>;
WHERE <condicion>;
INTO CURSOR _NombreCursor
SELECT _nOMBREcURSOR
report form <REporte> PREVIEW
Añade un comentario a esta respuesta
1
Respuesta de
Hola, si me podes mandar tu dirección de correo electrónico, te doy un ejemplo para imprimir el registro actual.
Respecto del segundo caso, tendrías que crear un cursor con los datos del formulario, usar dicho cursor como origen de datos de tu reporte y luego llamar a dicho reporte
Bueno, primero que nada te agradezco mucho por haberme respondido.
mi e-mail es: mensajesrobert@hotmail.com
Espero, que en la segunda pregunta me aclares un poco más la película.
Chau!
Y gracias nuevamente
Hola, ya te envíe todo a tu email, saludos
Hola, rodrigoj soy yo nuevamente molestándote y abusando de tu sabiduría.
Bueno primero que nada los archivo que me enviaste son excelentes ejemplo para ayudarme.
Espero puedas ayudarme nuevamente.
Necesito el código para un botón BUSCAR y que los registros resultantes se muestren en una grilla.
Saludos. Chau!
Algo que me había olvidado rodrigo.
Mira, el mismo ejemplo que me enviaste, lo compile para crear el ejecutable.
VFP lo crea, pero al ejecutarlo me aparece por un segundo al formulario y luego desaparece. ¿A qué se debe esto?
Chau!
Respecto a un botón buscar, depende mucho del tipo de búsqueda a realizar.
Normalmente utilizo instrucciones select - sql
Si quieres presentar los registros que coinciden con una cadena de texto, podes probar lo siguiente
Por ejemplo
Tabla clientes
codigocliente, nombrecliente
Caja de texto llamada thisform.textobuscado con la cadena de texto a buscar
El código en el botón buscar seria:
select codigocliente,nombrecliente from clientes where alltrim(upper(thisform.textobuscado.value))$alltrim(upper(nombrecliente)) into cursor csrRegistrosEncontrados
Luego asignas el cursor a una grilla, y allí los tienes
Respecto a que el ejecutable no permanece abierto, es porque tienes que poner en algún lugar la orden read events, y al salir de la aplicación la orden clearevents
Yo uso un archivo que se llama main.prg y que se establece como principal en el proyecto (una vez que lo creas haces click con el botón derecho y le pones establecer principal)
El código seria por ejemplo
set path to c:\miproyecto
do form miform
read events
Al cerrar el formulario si quieres salir de la aplicación tienes que ejecutar clear events
Añade un comentario a esta respuesta
0
Respuesta de
Una opción que se me ocurre es que filtres la tabla con el registro que quieres. usa SET FILTER TO . salu2 aramis18
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Visual Fox Pro o hacer tu propia pregunta: