我有一个表单(Cobind_frmMain),允许用户创建附加到它的标题池。因此,有一个顶级池名称(TopLvlPoolName),在子表单上,标题被添加到它。我需要的是为每个标题发布一份报告。我有所有设置的报告和查询。现在,报告将在一个文件中显示所有标题。标题位于名为“CatCode”的字段中。
我需要的是以下内容:
1.将每个标题保存为PDF并保存到我们的服务器
2.打开电子邮件并附上PDF
3.重复,直到完成所有标题。
编辑:这是我到目前为止的代码,我仍然得到的错误信息是:Set Recordset行上的“Too Few Parameters”。我正在尝试在strSQL行中设置参数。我希望PartPoolName(在Cobind_qryReport中,一个查询)等于打开表单上的TopLvlPoolName。下面列出了Cobind_qryReport的SQL:
Private Sub btn_Run_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
strSQL = "Select * FROM Cobind_qryReport WHERE PartPoolName = " & Me.TopLvlPoolName
Set rs = db.OpenRecordset(strSQL)
On Error GoTo Err_PO_Click
If MsgBox("Do you wish to issue the cobind invites?", vbYesNo + vbQuestion, "Confirmation Required") = vbYes Then
rs.MoveFirst
Do While Recordset.EOF = False
DoCmd.OutputTo acOutputReport, "Cobind_rptMain", acFormatPDF, "K:\OB MS Admin\Postage\CoBind Opportunities\Sent Invites\" & [CatCode] & "_" & [PartPoolName] & "Cobind Invite_" & Format(Now(), "mmddyy") & ".pdf"
DoCmd.SendObject acSendReport, "Cobind_rptMain", acFormatPDF, , , , [CatCode] & "_" & [PartPoolName] & " Cobind Invite", "Please find the cobind invite attached. Response is needed by " & [RSVP] & ". Thank you.", True
Recordset.MoveNext
Loop
End If
Exit_PO_Click:
MsgBox ("It didn't work")
Exit Sub
Err_PO_Click:
MsgBox Err.Description
Resume Exit_PO_Click
End Sub
Cobind_qryReport SQL:
SELECT tblEvents.EventTitle,Cobind_tblPartic.CatCode,Cobind_tblPartic.CodeQty,Cobind_tblPartic.PartPoolName,Cobind_tblTopLvl.RSVP,Cobind_tblPartic.ID
FROM Cobind_tblTopLvl,Cobind_tblPartic INNER JOIN tblEvents ON Cobind_tblPartic.CatCode = tblEvents.EventCode
GROUP BY tblEvents.EventTitle,Cobind_tblPartic.CatCode,Cobind_tblPartic.CodeQty,Cobind_tblPartic.PartPoolName,Cobind_tblTopLvl.RSVP,Cobind_tblPartic.ID
ORDER BY Cobind_tblPartic.ID;
再次感谢您的帮助!
答案 0 :(得分:1)
您的查询Cobind_qryReport
有一个您需要设置的参数。如果您想知道参数名称,请尝试以下代码
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("Cobind_qryReport")
If qdf.Parameters.Count > 0 Then
MsgBox (qdf.Parameters(0).Name)
End If
<强>更新强>
既然你知道你有一个参数select * from Cobind_qryReport
,那么设置参数可能会更容易,然后使用qdf打开记录集,例如。
Dim rs as DAO.Recordset
Dim qdf As QueryDef
Set qdf = CurrentDb.QueryDefs("Cobind_qryReport")
qdf.Parameters(0).Value = 7832
Set foo = qdf.OpenRecordset()
注意:设置参数值
时,可以在序号的位置使用参数名称 e.g。 qdf.Parameters("Foo").value = 7832