Access 2010将变量设置为表的单个字段

时间:2015-03-17 01:28:28

标签: sql ms-access

我觉得这应该很容易,但是我一整天都没有找到明确的答案。

我有一个包含电子邮件地址的用户表。

我有一个引用此表的组合框。

我想要做的就是将所选用户的电子邮件地址字段设置为字符串,这样我就可以用它来做。

只是尝试从sql查询中获取字符串,如:

"SELECT emailAddress FROM tblUsers WHERE id = " & Me.cmbUser.Value & ""

有人能指出我在正确的方向吗?

2 个答案:

答案 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)

如果您确实想要执行查询,则有多个选项:

  1. 您可以使用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))
    
  2. 您可以使用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>

  3. 请注意两个示例中Nz的用法 - 如果邮件地址可以是NULL,则必须这样做。如果没有Nz,代码会因为将字符串变量设置为NULL而崩溃。