2011-04-21 3 views
1

사용자가 첨부 된 제목 풀을 만들 수있는 양식 (Cobind_frmMain)이 있습니다. 최상위 풀 이름 (TopLvlPoolName)이 있고 하위 폼에 제목이 추가됩니다. 내가 필요한 것은 각 제목에 대한 보고서를 발행하는 것입니다. 보고서와 쿼리를 모두 설정했습니다. 현재 보고서에는 모든 제목이 하나의 파일로 표시됩니다. 제목은 "CatCode"라는 필드에 있습니다.쿼리 도움말을 통해 VBA 루프에 액세스하십시오.

내가 원하는 것은 다음과 같습니다.
1. 각 제목을 PDF로 저장하고 서버에 저장하십시오.
2. 이메일을 열고 PDF를 첨부하십시오.
3. 모든 제목이 완료 될 때까지 반복하십시오.

편집 : 이것은 코드와 내가 아직도 얻는 오류 메시지는 다음과 같습니다. Set Recordset 행에 "너무 적은 매개 변수"가 있습니다. strSQL 줄에 매개 변수를 설정하려고합니다. 열려있는 양식의 TopLvlPoolName과 같게 PartPoolName (Cobind_qryReport, 쿼리에서)을 원합니다. 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_tblTopLvl, Cobind_tblPartic INNER로부터 을 Cobind_tblPartic.ID tblEvents.EventTitle, Cobind_tblPartic.CatCode, Cobind_tblPartic.CodeQty, Cobind_tblPartic.PartPoolName, Cobind_tblTopLvl.RSVP, Cobind_tblPartic.ID Cobind_tblPartic.ID BY ORDER BY = tblEvents.EventCode GROUP Cobind_tblPartic.CatCode ON tblEvents 가입;

귀하의 모든 도움에 다시 한 번 감사드립니다!

+1

Dim 문에 대한 유형을 지정하고 지정하십시오. 그것은 당신에게 상처와 실행 시간을 저장합니다. –

+0

죄송합니다 - Option Explicit을 이해하지 못합니다. 정확히 어디에 넣을까요? –

답변

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() 

참고 :가 parameterValue를 설정할 때이 순서의 장소에서 매개 변수 이름을 사용할 수 있습니다

예를 들어, qdf.Parameters("Foo").value = 7832

+0

+1 쿼리가 둘 이상의 매개 변수를 포함하는 경우'qdf.Parameters.Count> 0'으로 더 좋을 수 있습니다. – HansUp

+0

OK, 매개 변수가 있습니다. 레코드 집합을 던지고 있다고 말하는거야? –

+1

@HansUp, 물론 맞습니다. (내 답변을 업데이트했습니다.) "오류가 너무 적습니다. 예상되는 1" –

관련 문제