我觉得这应该很容易,但是我一整天都没有找到明确的答案。
我有一个包含电子邮件地址的用户表。
我有一个引用此表的组合框。
我想要做的就是将所选用户的电子邮件地址字段设置为字符串,这样我就可以用它来做。
只是尝试从sql查询中获取字符串,如:
"SELECT emailAddress FROM tblUsers WHERE id = " & Me.cmbUser.Value & ""
有人能指出我在正确的方向吗?
答案 0 :(得分:0)
用户从列表中选择用户后,您可以使用组合框返回电子邮件地址。
假设您的用户tblUsers有用户和电子邮件字段
设置组合框属性:
1.Row Source = SELECT User,Email FROM tblusers
2.Column Count = 2
3.Bound Column = 0(0是第一列,1是第二列,是电子邮件)
4.Column width = x“; 0”(x是您的combox框宽度)
您可以从me.combobox.column(1)获取电子邮件地址。 me.combobox.value和me.comboxbox.column(0)都被选中User
答案 1 :(得分:0)
如果您确实想要执行查询,则有多个选项:
您可以使用DLookup
:
<强> TL; DR:强>
DLookup("Column", "Table", "Col=Value")
将执行SELECT Column FROM Table WHERE Col=Value
并返回第一行。
对于您问题的查询,您需要使用DLookup
,如下所示:
Dim mail As String
mail = Nz(DLookup("emailAddress", "tblUsers", "id = " & Me.cmbUser.Value))
您可以使用Recordset
加载SQL查询
如果您需要表格中的更多用户数据而不仅仅是电子邮件地址,这比DLookup
更有意义。
Dim mail As String
Dim phone As String
Dim RS As DAO.Recordset
Set RS = CurrentDb.OpenRecordset("SELECT emailAddress, phoneNumber FROM tblUsers WHERE id = " & Me.cmbUser.Value)
If Not RS.EOF Then
mail = Nz(RS("emailAddress"))
phone = Nz(RS("phoneNumber"))
End If
RS.Close
Set RS = Nothing
(为了使其正常工作,您的Access数据库需要对Microsoft DAO Object Library
的任何版本的引用......在大多数较新的Access版本中已经是这种情况了) < / p>
请注意两个示例中Nz
的用法 - 如果邮件地址可以是NULL
,则必须这样做。如果没有Nz
,代码会因为将字符串变量设置为NULL
而崩溃。