dimarts, 1 de maig de 2012

Creació d'un informe en Access

Farem un informe molt simple partint d'una taula i dues consultes. L'informe ens pintarà els valors que ens presentaran les dues consultes.



Creem un formulari i afegim dos CUADROS DE TEXTO. El quadre de texte porta una etiqueta i el propi quadre que és on apareixeran els valors.

El nombre del quadre de text on pintarem el total d'alumnes es diu "txtAlumnos".

El nombre del quadre de text on pintarem el total d'alumnes de Barcelona es diu "txtBarcelona"

Ara és el moment d'accedir a VB i escriure el codi:



Tot i que està comentat, la idea principal és la declaració d'un recordset rs) i una database (dbs)
Assignem la base activa (currentdb) a la base declarada [set dbs=CurrentDb]
Assignem al recordset una consulta [set rs = dbs.OpenRecordset("QryNumeroAlumnos")
Ens movem al primer (i únic) resultat de la consulta ja en el recordset [rs.MoveFirst]
Assignen el valor al quadre de text [Me!TxtAlumnos = rs![CuentadeApellido]

Atenció al Me! està indicant que el quadre de texte és "meu" des del punt de vista del informe.

Observa que CuentadeApellido és el nom del camp de la consulta



Fem el mateix pel altre quadre sols reassignant la consulta al recordset.

No es trivial que el Subprocediment es digui Report_Activate. Sols funcionarà amb aquest nom. No es que el posem per les bones. Es la combinació del objecte REPORT i el procediment ACTIVATE:



Finalment el codi escrit:

Option Compare DatabaseOption Explicit

'Es declara una variable pel recordset i una per la base de dades

Dim rs As Recordset, dbs As Database
Private Sub Report_Activate()

'S'assigna a la variable base de dades la base activa

Set dbs = CurrentDb

'S'obre el recordset pel objecte database des'del objecte (consulta) "QryNumeroAlumnos"

Set rs = dbs.OpenRecordset("QryNumeroAlumnos")

'Es situa en una posició del recordset

rs.MoveFirst

'Assignem al quadre de text el valor del recordset

Me!txtAlumnos = rs![CuentadeApellido]

Set rs = dbs.OpenRecordset("QryBarcelona")

'si sols hi ha un registre, aquest rs.MoveFirst no seria necessari

rs.MoveFirst
Me!txtBarcelona = rs![TotalBarcelona]
End Sub

Cap comentari:

Publica un comentari a l'entrada