Access - Realizar consulta en Access solicitando el nombre de la tabla

 
Vista:
sin imagen de perfil

Realizar consulta en Access solicitando el nombre de la tabla

Publicado por Rafael (13 intervenciones) el 30/08/2013 13:25:38
Estimado deneg_nhj

Sí he resuelto el problema mediante:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Private Sub cboAsignaturas3_Click()
Dim db As Database, r As Recordset
Dim nom As String
Dim sql As String, salida As String
Set db = CurrentDb
nom = Nz(Me.cboAsignaturas3, "")
 
'Si el combo está en blanco, avisa y salimos
 
If nom = "" Then
 
MsgBox "Tienes que seleccionar una asignatura"
 
Exit Sub
 
End If
'Para comprobar que coge el nombre
MsgBox "Asignatura " & nom
 
sql = "SELECT First([" & nom & "].[Nota final]) AS [Nota finalCampo], First([" & nom & "].Año) AS AñoCampo, Count([" & nom & "].[Nota final]) AS NúmeroDeDuplicados, Alumnos.Sexo FROM [" & nom & "] INNER JOIN Alumnos ON [" & nom & "].Ficha = Alumnos.Ficha GROUP BY Alumnos.Sexo, [" & nom & "].[Nota final], [" & nom & "].Año HAVING (((Count([" & nom & "].[Nota final])) > 0) And ((Count([" & nom & "].Año)) > 0)) ORDER BY First([" & nom & "].[Nota final]), First([" & nom & "].Año)"
 
Set r = db.OpenRecordset(sql)
r.MoveFirst
Do Until r.EOF
salida = salida & r("Nota finalCampo") & " - " & _
r("AñoCampo") & " - " & r("NúmeroDeDuplicados") & " - " & r("Sexo") & _
vbCrLf
r.MoveNext
Loop
r.Close
MsgBox salida, ,nom
End Sub

De esta forma me sale el MsgBox con los cuatro datos que quiero de cada asignatura, de la forma siguiente:

AP - 1 - 17 - M
AP - 1 - 14 - F
Siendo AP la nota, 1 el número de años en aprobar la asignatura, 17 el número de alumnos y M indica sexo masculino.

Sin embargo, no consigo que me salga el nombre de cada uno de los campos en la tabla. ¿Es posible hacer un solo informe (no formulario como he puesto antes) que me incorpore estos resultados?.

Muchas gracias
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
sin imagen de perfil

Realizar consulta en Access solicitando el nombre de la tabla

Publicado por deneg_nhj (348 intervenciones) el 30/08/2013 20:07:08
Estimado Rafael

Una solución es:

1. Crear una tabla con los resultados de la consulta.
2. Crear un reporte con la tabla del punto 1.


Para esto debes de hacer los siguientes pasos:

1. Modificar el codigo
1
2
3
4
5
sql = "SELECT First([" & nom & "].[Nota final]) AS [Nota finalCampo], First([" & nom & "].Año) AS
AñoCampo, Count([" & nom & "].[Nota final]) AS NúmeroDeDuplicados, Alumnos.Sexo INTO e_tbRep
 FROM [" & nom & "] INNER JOIN Alumnos ON [" & nom & "].Ficha = Alumnos.Ficha GROUP BY
Alumnos.Sexo, [" & nom & "].[Nota final], [" & nom & "].Año HAVING (((Count([" & nom & "].[Nota final]))
 > 0) And ((Count([" & nom & "].Año)) > 0)) ORDER BY First([" & nom & "].[Nota final]), First([" & nom & "].Año)"

2. Ejecutar una consulta que elimina la tabla "e_tbRep", esto solo es funcional a partir de la segunda corrida.
1
Currentdb.execute "drop table e_tbRep"


3. Ejecutar la consulta que crea la tabla.
1
Currentdb.execute sql


Entre estos pasos tienes que hacer el reporte con la tabla creada.
4. Llamar al reporte

1
DoCmd.OpenReport "rpt_xyz", acViewNormal



Espero que me haya explicado


Saludos!
deneg_nhj
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Realizar consulta en Access solicitando el nombre de la tabla

Publicado por Rafael (13 intervenciones) el 31/08/2013 01:43:08
Estimado/a deneg_nhj,
Ha funcionado el informe perfectamente.
Muchísimas gracias.
Un cordial 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