Crear una variable para abrir distintas tablas

Hola:
Soy nuevo en el mundo de visual basic, estoy aprendiendo en poco a poco a programar. Mi duda es la siguenite: puedo crear una variable que sea común a la cual le asigne el nombre de una tabla para hacer una consulta sql. Os dejo el código para que veáis que quiero hacer.
Muchas gracias ante todo.
If HACERPREGUNTASDE.Caption = "1" Then
' Abro la base de datos que contiente las tablas
Set dbBaseDatos = OpenDatabase("I:\HISTORIAS PARA NIÑOS\BD\preguntas97.mdb")
' AQUI TENGO QUE PONER ALGO PARA QUE LA CONSULTA SQL HABRA LA TABLA QUE YO LE INDIQUE DESDE AQUI.
' ALGO COMO ESTO  COMUN = TORITO(tabla)
HACERPREGUNTAS
End If
If HACERPREGUNTASDE.Caption = "2" Then
' Abro la base de datos que contiente las tablas
Set dbBaseDatos = OpenDatabase("I:\HISTORIAS PARA NIÑOS\BD\preguntas97.mdb")
' AQUI TENGO QUE PONER ALGO PARA QUE LA CONSULTA SQL HABRA LA TABLA QUE YO LE INDIQUE DESDE AQUI.
 ' y COMUN = BOSQUE (tabla)
 
HACERPREGUNTAS
End If
End Sub
Private Function HACERPREGUNTAS()
For i = 1 To 20 Step 1
Randomize
num = Int(Rnd() * 20) + 1
If aleatorio(num) = 6 Then
Set rsPreguntasRespuestas1 = dbBaseDatos.OpenRecordset("select * from TORITO where ID=" & num)
Set rsCorrecto1 = dbBaseDatos.OpenRecordset("select * from TORITO where ID=" & num)
' EN ESTAS CONSULTAS TENGO QUE SUSTITUIR TORITO(tabla) POR LA QUE ASIGNE EN LOS DISTINTAS HISTORIAS
 'Set rsCorrecto1 = dbBaseDatos.OpenRecordset("select * from COMUN where ID=" & num)
Respuesta
1
No indicas si utilizas ADO o DAO, así que por el código supongo que DAO.
Seguramente has creado una variable para la base de datos:
Dim dbBaseDatos as DataBase
y luego le pasas la orden set dbBaseDatos = Opendatabase(........)
pues seguidamente debes crear un recorset:
Dim dbRecorset as Recordset
y le asignas el recorset de la manera que se hace en DAO, recuerda siempre que SET "OBJETO INFERIOR" = OBJETOSUPERIO.METODO
o sea, lo que viene a ser:
Set dbRecordset = dbBaseDatos.OpenRecordset(sentencia sql", dbOpenDynaset)
Donde sentencia sql es por ejemplo: "select * from [tabla]"
Las comillas son obligatorias.
Con esto creas el recordset y lo llenas...
Ahora para acceder a cualquier campo solo tienes que llamarlo, por ejemplo:
text1.text = dbRecorset.fields!campo o text1.text = dbRecordset.fields("campo")
Y si lo relacionas con algún control también puedes moverte por el recordset con .movefirst .movenext etc...
Espero haberte ayudado...
-----------------------------------------------------------------------------------
No dejes de visitar:
www.coincity.es
www.programaspoliciales.es
Hola juanis2808 y demás expertos:
Gracias por contestar, pero perdona por esta aclaración.
Si es código Dao, pero no sé si me has entendido lo que pido o no entiendo lo que realmente me dices. Me explico:
En las dos primeras condiciones " If HACERPREGUNTASDE.Caption = "1" Then "..... lo que hago es conectarme a la base de datos, con Set dbBaseDatos = OpenDatabase("I:\HISTORIAS PARA NIÑOS\BD\preguntas97.mdb") y luego quiero crear una variable la cual me coga el nombre de la tabla para luego en la consulta que hago en la que pueda sustituir el nombre de la tabla TORITO por una variable la cual pueda cambiar por cualquier otro nombre de tabla. Concreto : Segun en que condicion que entre tengo hacer una consulta a una tabla u otra. Tener varias condiciones y tener una sola consulta en comun dependiendo que condicion entre.
Set rsPreguntasRespuestas1 = dbBaseDatos.OpenRecordset("select * from TORITO where ID=" & num)
Set rsCorrecto1 = dbBaseDatos.OpenRecordset("select * from TORITO where ID=" & num)
Vale, perdona, es que no se entiende bien la pregunta, a ver si esto es lo que buscas:
Dim TORITO as String
TORITO = "nombre de tabla"
Set RECORDSET = BASEDATOS.OpenRecordset("Select * from " & TORITO & " where ID=" & num)
o bien creas un Sub así:
Private Sub ASIGNAR_RS (Tabla as String, RecordSet as String, BaseDatos as string)
Set RECORDSET = BASEDATOS.OpenRecordset("Select * from " & Tabla & " where ID=" & num)
End Sub
y la llamas donde quieras con:
ASIGNAR_RS nombre_tabla, nombre_recordset, nombre_basedatos
A ver si ahora lo he entendido bien

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas