Доступ к источнику записи отчета и цикл по полю в наборе записей - PullRequest
0 голосов
/ 25 марта 2019

У меня есть отчет MS Access, который получает данные из запроса.

Набор данных структурирован следующим образом:

[field 1] [field 2] ... [email]

В отчете есть кнопка «Отправить приглашение»в заголовке, который принимает все значения в поле [email], строит строку адресов, разделенных точкой с запятой, и открывает приглашение Outlook.

Я пытался использовать RecordsetClone для циклического прохождения через него, но я обнаружил, что этот метод недоступен в отчетах.

Есть ли другой способ выполнить работу?

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Похоже, у меня есть длинное, но неэффективное решение:

    ' Get the recordset by performing a new query
    Dim rs As DAO.Recordset: Dim MailArray As Variant
    qry = "SELECT EmployeeID FROM Registry WHERE SessionID = " & CStr(TempVars("SID").Value)
    Set rs = CurrentDb.OpenRecordset(qry)

    ' Move the recordset in an array with an esoteric formula found in StackOverflow
    With rs
        .MoveLast
        .MoveFirst
        MailArray = .GetRows(.RecordCount)
    End With

    ' Loop through the array and build the string with the email addresses separated by a semicolon
    Dim i As Integer: Dim strList As String
    If (UBound(MailArray, 2)) > 0 Then
        For i = 0 To UBound(MailArray, 2)
            strList = strList + DLookup("MailAddress", "Employee", "ID=" & (MailArray(0, i))) & ";"
        Next i
    Else
        MsgBox "No people enrolled in this session.", vbOKOnly, "Attenzione!"
    End If
    Erase MailArray

    ' Feed the string to Outlook
    8< -------------------------------------

Хотя работает.

PS: спасибо, Harassed Dad, за поддержку.

0 голосов
/ 25 марта 2019
 Dim rs As Recordset
 Set rs = CurrentDb.OpenRecordset(Me.RecordSource)
...