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 29/08/2013 02:09:49
Tengo una base de datos con treinta tablas diferentes con nombres de asignaturas.
Desearía poder realizar una consulta común para todas las tablas. ¿Es posible introducir el nombre de la tabla que se desea en una variable y poner esta variable en la consulta?
Lo he intentado en VisualBasic pero no me sustituye la variable que asigno en un string (por ejemplo Biología) en la instrucción db.openRecordset

Dim db As Database, r As Recordset
Dim nom As String
Dim sql As String, salida As String
Set db = CurrentDb
'Para comprobar que coge el nombre de la asignatura
nom = InputBox("Escribe la asignatura")
MsgBox "Asignatura " & nom
otro = "SELECT * FROM nom"
Set r = db.OpenRecordset(otro)

Muchas gracias por la ayuda
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 01:41:44
Estimado Rafael

Veo que vuelves a preguntar lo mismo, será que no has resuelto tu problema? Si es así, por favor vuelve a plantear tu pregunta, probablemente no la hemos entendido.

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
0
Comentar
sin imagen de perfil

Realizar consulta en access solicitando el nombre de la tabla

Publicado por Rafael (13 intervenciones) el 30/08/2013 12:12:43
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 formulario que me incorpore estos resultados?.

Muchas gracias
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