Sql select en Access mediante VBA

Como estas mi pregunta es la siguiente resulta
que tengo un formulario en Access con un texto y un botón,
lo que deseo hacer es realizar una consulta dependiendo
del registro que un usuario digite en el texto del mismo
formulario... He realzado esto mediante el siguiente código
On Error GoTo Err_EjecutarConsulta_Click
Dim consulta As String
Dim stDocName As String
DoCmd.RunSQL "Select* from Encuestados"
Exit_EjecutarConsulta_Click:
Exit Sub
Err_EjecutarConsulta_Click:
MsgBox Err.Description
Resume Exit_EjecutarConsulta_Click
Pero el compilador VBA de Access me dice que "La acción Ejecutar SQL
requiere como argumento una instrucción SQL", ademas veo que en la
Web me dicen que la función DcCmd. Runsql no ejecuta consultas
DDL como el SELECT sino DML como (Insert... Etc etc).
Por otro lado he tratado de realizar mediante el codigo:
Sub SQLstament()
Dim strSQL As String
Dim DB As DAO.Database
Dim rs As DAO.Recordset
Set DB = CurrentDb()
strSQL = "SELECT * FROM Encuestados"
Set rs = DB.OpenRecordset(strSQL, dbOpenDynaset)
VariableName = rs!FieldName
Set rs = Nothing
Set DB = Nothing
End Sub
Pero me dice "No se encontró el objeto en esta coleecion
y me subraya la linea de código VariableName= rs! Fieldname"
Respuesta
1
La opción del recordset es la más recomendable. El error que da es por que no le has indicado el nombre del campo que deseas buscar.
No obstante sería más simple que crearas una consulta con los campos que quieras. El campo que debe coincidir con el texto del formulario en las condiciones le pones: Formularios![Nombre del formulario]![Nombre del Textbox]. Luego desde el commandbutton ejecuta la consulta.

1 respuesta más de otro experto

Respuesta
3
Respecto a lo primero es totalmente cierto lo que encontraste
lo tienes que hacer con el recordset y tienes ya la idea
cambia tu código por el siguiente:
Dim strSQL, VariableName
Dim Db As Database
Dim Rs As Recordset
Set Db = CurrentDb()
strSQL = "SELECT * FROM Encuestados"
Set Rs = Db.OpenRecordset(strSQL, dbOpenDynaset)
' el encontrara muchos registros siquieres definir directamente la variable tienes que colocar una consulta que arroje solo un registro y decirle
Rs.movefirst
VariableName = rs!FieldName
'por lo contrario abre un loop y dentro de el colocas otra condicion para cuando quieras que te lea el campo, asi:
Rs.movefirst
Do while not Rs.eof
VariableName = rs!FieldName
Rs.movenext
loop
Rs. Close
Db. Close
Hola muchas gracias por su disposición, copie y pegue el código pero ahora el compilador me muestra un error en la linea VariableName = Rs!FieldName
dice que no se encotro el elemento en esa colección
¿Y asdemas en donde se mostraría esta consulta dentro de Access?
Gracias
Att. Hernan Camilo
El error es porque debes en lugar de fieldname colocar de forma correcta el nombre del campo en la tabla (para este caso encuestados).
Para mostrarlo en access debes crear un control (por ejemplo cuadro de texto) y después de cabpurar el valor de variablename haces 'nombrecontrol'=variablename.
Puedes cerrar la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas