Parámetros a un informe

Estoy intentando hacer un informe que me haga un recuento de los registros de una determinada categoría.
Había pensado hacer filtros de cada una de las categorías y guardar la propiedad recordCount en una variable. Así para cada categoría.
Y luego esos valores pasarlos a un informe que tiene varios cuadros de texto preparados para ello.
Los problemas que me encuentro son:
- Cómo crear una variable global. Creo que lo he resuelto con la declaración global en un módulo. Aunque public en form deberia valer
- Cómo hacer el cuadro de texto del informe igual a la variable. He probado pero no tiene la propiedad value, por lo que no puedo asignarle nada. A una etiqueta tampoco.
También he probado a poner un origen de datos con el generador de expresiones pero no aparecen las variables.
¿Se te ocurre algo?

1 respuesta

Respuesta
1
Creo que lo siguiente puede ser más fácil, sin necesidad de módulos:
Vamos por partes:
a) Sin necesidad de programación
Haz una consulta de este tipo, la metes en un subinforme y a correr:
SELECT Productos.Categoría, Count(Productos.Categoría) AS [Productos por categoría]
FROM Productos
GROUP BY Productos.Categoría;
(Para la consulta he creado una tabla Productos con dos campos IdProd y Categoría)
b) Respondiendo a tu pregunta:
b.1) La variable global en un módulo, es así como lo has hecho
b.2) Si ya tienes todo preparado en tu informe, aunque me parece un poco complicarse mucho la vida pasar al control textbox del informe el valor por código, utiliza la propiedad Text
b.3) Lógico que en el generador de expresiones del textbox no te aparezcan las variables, aparecen los campos que hay en la consulta que le has dado al informe. Por eso te digo en a) que te hagas un informe con esa consulta, le metas dos textbox que cojan el dato de los dos campos de la consulta; y este informe lo metas como subinforme en otro donde tengas el resto de cosas que te hagan falta
c) Si lo quieres hacer todo por código. Pero esto es matar moscas a cañonazos (Access ya coloca él solo los valores de consultas en textbox de los informes)
c.1) Leer el número de veces que aparece determianda categoría en la tabla productos
Puedes hacerlo de varias maneras:
c.1.1.) define la variable, inicializa, abre el recordset, recorrelo sumando
c. 1.2.) utiliza un función que le pases el recordset, el nombre del campo que quieres leer y el valor de otro campo para llegar al registrocomo variables y lea el valor, se la pasas a la consulta SQL de arriba donde busques el nombre de una categoría leas el cuenta.
c.1.2.) utiliza una función que le pases a un recordset de un sólo registro, el nombre de la consulta y el nombre del campo a leer, y te de el valor de este campo para ese registro. Sólo hay que hacer un SQL al anterior con un criterio de selección contra el campo caterorías.
Esta función a la que le das como variables el nombre de una tabla/consulta y el nombre de un campo, y te devuelve el valor que hay es útil, sólo para tablas o consultas de un registro, te evitas hacer los moves, si te interesa te la puedo pasar. Te montas las consultas como quieras y lo lees de manera que al final sólo quede un registro de lo que te interesa leer; para tablas la utilizo de tal manera que hago que el usuario actualice el valor de algún campo de esta tabla desde un combo, y todas las consultas las hago que tengan relación con ese campo, así dependiendo del valor que hay en esta tabla las demás consultas vienen en cascada.
Muchas gracias!
Con tu consulta SQL (metiéndola en access como SQL) he descubierto los agrupar, contar, etc...
  Problema solucionado.
He creado unas consultas personalizadas con los datos que me interesan y el recuento pertinente y luego un informe personalizado... y ha funcionado!
La consulta es ésta, hecha con el asistente:
  SELECT Format$(Intervenciones.Fecha,'mmmm yyyy') AS [Fecha Por mes], Intervenciones.Tipo_Int, Count(Intervenciones.Tipo_Int) AS Recuento
FROM Intervenciones
GROUP BY Format$(Intervenciones.Fecha,'mmmm yyyy'), Intervenciones.Tipo_Int;
Y ha funcionado!
Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas