【问题标题】:How do I assign a query result (an email address) to a variable?如何将查询结果(电子邮件地址)分配给变量?
【发布时间】:2021-01-23 20:10:03
【问题描述】:

我正在尝试将查询结果(电子邮件地址)分配给变量。

我希望将该变量分配给一个按钮以打开当前使用的邮件系统并使用该电子邮件地址打开一封新邮件。

Public valid_mail As Variant
    
Public Sub mail_list()
    valid_mail = "SELECT CustomerFACT.îééì FROM CustomerFACT WHERE (((CustomerFACT.[èìôåï ðééã]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*')) Or (((CustomerFACT.[ùí àéù ÷ùø]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*')) Or (((CustomerFACT.[ùí äì÷åç]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*')) Or (((CustomerFACT.[îñôø òåñ÷]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*'));"
End Sub
    
Private Sub mail_70_Click()
    DoCmd.SendObject acSendNoObject, , , valid_mail
End Sub

当我不使用全局变量 valid_mail,而是在双引号中输入电子邮件地址时,它可以工作。

【问题讨论】:

  • 您已替换查询语句。您必须分配查询的结果。
  • 不太明白...

标签: sql vba ms-access


【解决方案1】:

这是我在示例中测试的。您需要替换记录集的结果。

Public valid_mail As Variant

Sub test()
    Dim DB As Database
    Dim rs As Recordset
    Dim strSQL As String
    
    Set DB = CurrentDb
    
    strSQL = "select email from [table] "
    
    Set rs = DB.OpenRecordset(strSQL)
    
    valid_mail = rs!email
    
    MsgBox valid_mail
End Sub

替换你的会是这样的:

Public valid_mail As Variant
Sub  mail_list()
    Dim DB As Database
    Dim rs As Recordset
    Dim strSQL As String
    
    Set DB = CurrentDb
    
    strSQL = "SELECT CustomerFACT.ieei FROM CustomerFACT WHERE (((CustomerFACT.[eioai ðeea]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*')) Or (((CustomerFACT.[ui aeu ÷uø]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*')) Or (((CustomerFACT.[ui ai÷ac]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*')) Or (((CustomerFACT.[inoø oan÷]) Like '*' & Forms!CustomerLookUpFORM!searchbox & '*'));"
    
    Set rs = DB.OpenRecordset(strSQL)
    
    valid_mail = rs!ieei
    
    ''MsgBox valid_mail
End Sub

Private Sub mail_70_Click()

call mail_list

DoCmd.SendObject acSendNoObject, , , valid_mail
End Sub

你的sql语句表达不正确。它应该如下所示。

strSQL = "SELECT CustomerFACT.ieei FROM CustomerFACT WHERE (((CustomerFACT.[eioai ðeea]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "*')) Or (((CustomerFACT.[ui aeu ÷uø]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "'*)) Or (((CustomerFACT.[ui ai÷ac]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "*')) Or (((CustomerFACT.[inoø oan÷]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "*'));"

我的回答也打错了。

Like '*" & Forms!CustomerLookUpFORM!searchbox & "'*))

Like '*" & Forms!CustomerLookUpFORM!searchbox & "*'))

修正后的sql是

strSQL = "SELECT CustomerFACT.ieei FROM CustomerFACT WHERE (((CustomerFACT.[eioai ðeea]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "*')) Or (((CustomerFACT.[ui aeu ÷uø]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "*')) Or (((CustomerFACT.[ui ai÷ac]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "*')) Or (((CustomerFACT.[inoø oan÷]) Like '*" & Forms!CustomerLookUpFORM!searchbox & "*'));"

【讨论】:

  • 嗨!多谢!似乎有效,只是当我运行它时,它会抛出一个错误“错误 3061 参数太少”,当我调试时,错误发生在这里 - Set rs = DB.OpenRecordset(strSQL)
  • @EyalMarom,您的 sql 语句表达不正确。在文章末尾添加。
  • 这正是我所做的。调试时,错误导致 OpenRecordset 函数,说它需要更多参数(至少 1 个),当我检查语法时,其他可能的参数是可选的。想不通。
  • @EyalMarom,我的回答也有错别字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多