J'ai une zone de liste déroulante dont je veux utiliser la valeur avec une clause SQL WHERE. Comment pouvez-vous exécuter une instruction SELECT dans VBA basée sur la valeur de la zone de liste déroulante?
Si vous souhaitez utiliser la valeur de la colonne liée, vous pouvez simplement vous référer au combo:
sSQL = "SELECT * FROM MyTable WHERE ID = " & Me.MyCombo
Vous pouvez également vous référer à la propriété de la colonne:
sSQL = "SELECT * FROM MyTable WHERE AText = '" & Me.MyCombo.Column(1) & "'"
Dim rs As DAO.Recordset
Set rs = CurrentDB.OpenRecordset(sSQL)
strText = rs!AText
strText = rs.Fields(1)
Dans une zone de texte:
= DlookUp("AText","MyTable","ID=" & MyCombo)
*édité
Access 2007 peut perdre le CurrentDb: voir http://support.Microsoft.com/kb/16717 , donc en cas d'obtention "Object Invalide ou n'est plus défini " avec les exemples, utilisez:
Dim db as Database
Dim rs As DAO.Recordset
Set db = CurrentDB
Set rs = db.OpenRecordset("SELECT * FROM myTable")
Voici une autre façon d'utiliser l'instruction SQL SELECT
dans VBA:
sSQL = "SELECT Variable FROM GroupTable WHERE VariableCode = '" & Me.comboBox & "'"
Set rs = CurrentDb.OpenRecordset(sSQL)
On Error GoTo resultsetError
dbValue = rs!Variable
MsgBox dbValue, vbOKOnly, "RS VALUE"
resultsetError:
MsgBox "Error Retrieving value from database",VbOkOnly,"Database Error"