Доступ к VBA Loop с помощью справки Query - PullRequest
1 голос
/ 21 апреля 2011

У меня есть форма (Cobind_frmMain), которая позволяет пользователю создавать пул заголовков, которые к нему прикреплены. Таким образом, существует имя пула верхнего уровня (TopLvlPoolName) и в подчиненной форме заголовки добавляются к нему. Что мне нужно, это оформить отчет по каждому из названий. У меня есть отчет и все запросы настроены. Прямо сейчас, отчет покажет все заголовки в одном файле. Названия находятся в поле под названием «CatCode».

Мне нужно следующее:
1. Сохраните каждый заголовок в формате PDF и сохраните его на нашем сервере.
2. Откройте электронную почту и прикрепите PDF.
3. Повторяйте, пока все названия не будут сделаны.

РЕДАКТИРОВАТЬ: Это то, что у меня есть для кода и сообщение об ошибке, которое я все еще получаю: «Слишком мало параметров» в строке Set Recordset. Я пытаюсь установить параметр в строке strSQL. Я хочу, чтобы PartPoolName (в Cobind_qryReport, запрос) равнялся TopLvlPoolName в открытой форме. SQL для Cobind_qryReport приведен ниже:

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 ВНУТРЕННЕЕ СОЕДИНЕНИЕ 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;

Еще раз спасибо за вашу помощь!

1 Ответ

1 голос
/ 21 апреля 2011

Ваш запрос 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()

Примечание: вы можете использовать имя параметра вместо порядкового номера при установке значения параметра

например qdf.Parameters("Foo").value = 7832

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...