web-dev-qa-db-fra.com

Comment utiliser une instruction SQL SELECT avec Access VBA

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?

14
Nag Hammadi

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é

27
Fionnuala

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")
7
user2885978

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"
2
user28864