所以我使用按鈕來運行查詢,然后將選定的電子郵件拉入電子郵件。有一個單一的功能,然后每個按鈕發送相應的查詢來充當記錄集
Sub EmailQuery(strQueryName As String)
'On Error GoTo Err_EmailRequery_Click
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strEmail As String
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open strQueryName, cn
With rs
.MoveLast
.MoveFirst
Do While Not .EOF
strEmail = strEmail & .Fields("Email") & ";"
.MoveNext
Loop
.Close
End With
strEmail = Left(strEmail, Len(strEmail) - 1)
DoCmd.SendObject , , , , , strEmail, , , True, False
'Exit_EmailRequery_Click:
'
' Exit Sub
'
'Err_EmailRequery_Click:
'
' MsgBox Err.Description
'
' Resume Exit_EmailRequery_Click
End Sub
Private Sub cmdActive_Click()
EmailQuery ("qryActiveSuppliers")
End Sub
Private Sub cmdAllSuppliers_Click()
EmailQuery ("qryAllSuppliers")
End Sub
Private Sub cmdArrangements_Click()
EmailQuery ("qryAgreementEmail")
End Sub
Private Sub cmdInactive_Click()
EmailQuery ("qryInactiveSuppliers")
End Sub

uj5u.com熱心網友回復:
您的嘗試存在幾個問題:
命名物件:使用 ADO 呼叫保存的查詢,
Recordset.Open該查詢主要需要 SQL 陳述句或命令物件,而不是命名物件。因此,您的第一個錯誤的原因。相反,使用Conn.Executewhich 將標準 SQL 語法添加到命名物件。SELECT * FROM或者,使用查詢物件顯式傳遞。這不是 DAO 記錄集的問題(專門針對 MS Access 物件模型的庫,而 ADO 則適用于任何后端)。引數:在看不到表單值的后端查詢中使用表單控制元件值。任何未使用
DoCmdlikeOpenQuery(對于選擇查詢)或RunSQL(對于操作查詢)運行的查詢都無法識別表單控制元件。因此,第二個錯誤的原因。而不是Forms!MyForm!MyControl使用ADO Command 引數或DAO QueryDefs 引數。在我的[vba]標簽答案中搜索無數 ADO 或 DAO 引數解決方案。請參閱下面的用例:Sub EmailQuery(strQueryName As String) On Error GoTo Err_EmailQuery_Click Dim strEmail As String Dim db As DAO.Database Dim qdef As DAO.QueryDef Dim rs As DAO.Recordset Set db = CurrentDb Set qdef = db.QueryDefs(strQueryName) With qdef ' BIND PARAMETER .Parameters("PrmID") = [Forms]![frmMainMenu]![cboAgreement] ' OPEN RECORDSET Set rs = .OpenRecordset() End With '...loop and email... Exit_EmailQuery_Click: rs.Close Set rs = Nothing: Set qdef = Nothing: Set db = Nothing Exit Sub Err_EmailQuery_Click: MsgBox Err.Number & " - " & Err.Description, vbCritical, "RUNTIME ERROR" Resume Exit_EmailQuery_Click End Sub特殊功能:僅運行 MS Access GUI 方法,例如
NZ在無法識別此類功能的后端查詢中。如果您解決了上述兩個問題,您將遇到此錯誤。使用IIFISNULL/IS NULL。同樣,VBA 用戶定義的函式也不會被識別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/488989.html
上一篇:訪問屬于子表單的查詢中的特定欄位
