Reportes

Buenas noches Junior, espero estés bien, necesito crear un informe en el cual si un nombre aparece repetido en una tabla me lo muestre una sola vez, como puedo hacer el filtro o la selección para que si en la tabla que llamo para el informe el dato se muestra más de una vez solo me lo muestre una vez.
También quisiera me sacaras de una duda
Me enviaste un ejemplo con estos códigos
En el init del grid
*CREATE CURSOR agregado ("Nombre Clase" as "name" , 0.00 as "nota" , 0.00 as "porcentaje" , 0.00 as "notaf" , 0.00 as "perdi")
thisform.grid1.recordsource = ''
CREATE CURSOR prueba (no c(30) , not f(5,2) , por f(5,2) , tot f(5,2) , per f(5,2))
thisform.grid1.recordsource = ''
thisform.grid1.RecordSource = 'prueba'
¿Mi pregunta es la parte de arriba es un comentario o debo usarla para crear el grid...? ¿Lo qué hay después del *...?
En el boton de comando en el procedimiento click estaba esto otro.
thisform.grid1.recordsource = ''
GO bottom
INSERT INTO prueba VALUES ("hola" , 80.00 , 90.00 , 30.00 , 10.00)
thisform.grid1.RecordSource = 'prueba'
GO top
¿Cómo ago si lo que quiero es que en el grid me muestre lo que hay en unos campos textos los cuales unos son de tipo carácter y otros numérico, ademas de un check que también es numérico...?
Coloque lo siguiente y me da error.
INSERT INTO prueba VALUES (Val(thisform.text1.value),Val(thisform.text2.value), Alltrim(thisform.text3.value) , Val(thisform.check1.value))
Gracias por tu tiempo y tu buena disposición para ayudar a los demás...!

1 respuesta

Respuesta
1
bueno espero que aya entendido tienes un cursor con la informacion, y lo que quieres es que solo aparescan valores no repetidos
entonces haces un select
select distinct from tabla into cursor temporal
ahi tienes todos los valores que no se repiten
Ok, entiendo eso, lo del temporal ya lo capte. Ahora bien, al mandar a hacer un reporte yo quisiera que en el mismo aparezca el mes y el año al que estoy consultando, me explico reporte de compras del mes de marzo del 2010. Tengo compras de diferentes meses y el reporte lo voy a hacer en base a las compras que cumplan con la condición por ejemplo
REPORT FORM MiReporte FOR DtoS(MiCampoFecha) >= DtoS(FechaInicial) .AND. DtoS(MiCampoFecha) <= DtoS(FechaFinal) PREVIEW
Eso me daría un mes especifico porque lo haría entre el 1ro y el ultimo del mes, en la parte del encabezado quiero que me aparezca el mes y el año de este reporte, ¿cómo podría hacer eso...?
Ok, mira muchas veces sucede que eso no lo puedes meter en un cursor, entonces no te preocupes vfp también puede hacer reporte por medio de una variable, lo que tienes que hacer es declarar el valor de la variable que va tener el contenido por ejemplo
variable_para_reporte = "3/4/2010"
No importa que esta variable sea un string o un int no importa, solo que tienen que ser valores primitivos, es decir no puedes poner objetos en la variable, y después para mandar a imprimir esa variable lo que tienes que hacer es dentro del reporte agregas un textbox y en el source o donde siempre pones los valores por ejemplo cursor. Campo1 vas a poner ahorra el nombre de la variable en este caso variable_para_reporte
sino te corre así solo declara la variable publica, pero primero intenta sin declararla publica
Saludos espero que te sirva de lo contrario pregunta nuevamente !
No entendi bien, lo que quiero es que no me muestre todos los datos que estan en la tabla sino solo los que cumplan la condicion de dos fechas fecha1=text1.value fecha2=text2.value
where campofecha>=fecha1 and campofecha<=fecha2
¿Cómo podría hacer la condición, o el filtro...?
Mmm lo siento entonces yo entendí mal
Jajaja
Es
select campo1, campo2 from tabla where fecha between fecha1 and fecha2 into cursor fechas_que_cumplen
Ok. Junior gracias, podrías especificarme la parte de fecha1 y fecha2, ¿mi error debe ser en cuanto a el DTOC o CTOD...? mi campo fecha es tipo DATE y los valores los ingresos desde el teclado en dos campos de textos los cuales les tengo una mascara asi   ##/##/##
Imagino por hay esta mi error... Sera que me puedes decir que debo usar para que me lea bien los campos... Gracias...
mmm bueno lo que pasa es que tu dato no debe de ser de ese tipo, ya que lo que estas haciendo es un string y ese es el problema y tu tabla sseguramente tiene datos date entonces lo que pasa es que no esta bien ya que los datos son tipo fecha para declarar un valor tipo fecha pon en el init de tu texto lo siguiente this.value = {} esto te indica que va ser tipo data el valor que va ingresar y despues haces la consulta creo que asi si te debe dejar , pero recuerda que tambien tendras que cambiar un poco de tu insert, ya que ahorra mandaras un tipo de dato fecha no un string como lo hacias
Coloque lo que me dijiste en los textbox y luego
Coloque lo siguiente y ahora solo hace un pestañeo y no muestra nada
SELECT compras
SET FILTER TO DtoS(fecha) >= DtoS(thisform.text2.Value) .AND. DtoS(fecha) <= DtoS(thisform.text3.Value)
LOCATE
REPORT FORM compras PREVIEW
Bueno te explicare detenidamente por si no función ya que creo que tu error es de manejo de datos.
Primero un integer no es lo mismo que un string y que un date
estos son completamente diferentes, ya que estos representan muchos conjuntos y como los conjuntos son grupos abelianos es decir si manejas un string te retorna un string, si manejas un int te rotorna un int y así sucesivamente en tu caso si manejas un date te retorna un date, entonces
1 . primero los textos que quieres tener un date pones this.value = {} esto indica que seran tipo date por tanto no necesitaras usar el dtoc o ctod
2. Tu tabla donde estas guardando los datos debe ser de dato date
3. Al insertar valores no necesitas cambiarle el tipo de dato ya que estos vienen de formato date
4. Al hacer tu consulta no necesitas hacer nada más que solicitas los campo y el where fecha between fecha1 and fecha2 que son tus valores del texto que vienen en formato date
5. Después mandas tu reporte como te sale
espero que me ayas entendido sino sige comentando
Muchísimas gracias Junior y disculpa que te aya molestado tanto... Las fechas las estaba ingresando en la consulta de modo día, mes y año... Y en los textbox vi que son mes, día y año...! Por eso no me mostraba nada ya que la consulta la hacia con otra fecha a la que yo pensaba estaba escribiendo... Gracias y disculpa el tiempo que te hice perder, estabas bastante tapado y no vi ese detalle

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas