Access - Informe de consulta de referencias cruzadas

   
Vista:

Informe de consulta de referencias cruzadas

Publicado por BetoLaguna (4 intervenciones) el 13/02/2013 02:05:04
quisiera hacer un informe de una consulta de referencias cruzadas. supongamos que la cosulta da como resultado de enero a diciembre; pero con la dificultad de que el usuario seleccione mes inicial y mes final mediante formulario. ejem

marzo.- mes inicial junio.- mes final

tendriamos que hacer el informe que contenga 03,04,05,06.

Lo bueno: Yo baje un programa con la solucion.
Lo malo: que no pude interpretar el codigo para mi aplicacion.

Haber si alguien se anima a apoyarme.
mi correo laguna_beto@hotmail.com y les envio el ejemplo en access.

Saludos ¡

Ojala se tome un tiempesito para dar un vistazo Jefferson Jimenez muy buenos ejemplos que publica en su pagina: https://sites.google.com/site/jjjt1973/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Norberto

Informe de consulta de referencias cruzadas

Publicado por Norberto (432 intervenciones) el 19/02/2013 13:55:55
Hola.

Además del campo que sirve de encabezado de fila en la consulta pon en el encabezado del informe doce etiquetas con los nombres Etiqueta01 a Etiqueta12, y en la sección detalle doce cuadros de texto con los nombres Texto01 a Texto12 sin origen del control (independientes).

En el evento al abrir del formulario pones este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Report_Open(Cancel As Integer)
    Dim i As Integer, n As Integer
    Dim Mes As String, Ctr As String
    Dim xx As String
 
    For n = Forms!Parametros!MesDesde To Forms!Parametros!MesHasta
        i = i + 1
        Ctr = Format(i, "00")
        Mes = Format(n, "00")
        Me.Controls("Etiqueta" & Ctr).Caption = UCase(MonthName(n))
        'Esto es para saber si en el intervalo hay algún mes que no tenga datos
        'Si es así, mantiene la columna en blanco pero no da error
        'Seguro que hay otra forma de hacerlo pero ésta es sencilla y funciona.
        On Error Resume Next
        xx = CurrentDb.QueryDefs(Me.RecordSource).Fields(Mes).Name
        If Err = 0 Then     'Existe el mes
            Me.Controls("Texto" & Ctr).ControlSource = Mes
        Else                'No existe el mes
            Me.Controls("Texto" & Ctr).ControlSource = ""
        End If
        On Error GoTo 0
    Next
 
End Sub


En este caso, en la consulta de referencias cruzadas he puesto como encabezado de columna la expresión Mes: Formato([Fecha];"mm"). De esta manera los campos resultantes son 01, 02,...,12 en vez de 1, 2, 3,...,12.

Espero que te sirva.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Informe de consulta de referencias cruzadas

Publicado por Alexander (1 intervención) el 25/07/2015 17:45:45
La buena noticia es que mirando la sentencia SQL que genera una consulta de Referencias Cruzadas verás que acaba en PIVOT NombreCampo siendo NombreCampo sobre el que haces el Encabezado de Columna. Pues bien puedes hacer que la consulta tenga unos campos fijos utilizando la cláusula
PIVOT NombreCampo IN (Valor1, Valor2, ...) etc
por ej:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TRANSFORM
Sum(Cantidad) AS Ventas
SELECT
Compania
FROM
Pedidos
WHERE
Fecha Between #01-01-1998# And #12-31-1998#
GROUP BY
Compania
ORDER BY
Compania
PIVOT
"Trimestre" &
DatePart("q", Fecha)
In ('Trimestre1', 'Trimestre2', 'Trimestre 3', 'Trimestre 4')

Y otra solución más trabajosa en un principio, pero a la larga seguro que más provechosa es tener una tabla auxiliar con los campos que queramos, hacer la consulta que sea, rellenar la tabla auxiliar con los datos que necesitemos y el subformulario, informe o lo que sea hacerlo sobre la tabla auxiliar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar