Набор записей FindFirst в массиве - PullRequest
0 голосов
/ 10 марта 2020

Я использую Access для запуска кода VBA. У меня есть массив, который проходит через запрос набора записей "rstQueryTrainings". В этом запросе есть несколько строк на один идентификатор. Я хотел бы, чтобы этот массив мог определить, содержит ли строка первый уникальный идентификатор в rstQueryTrainings, и, если это так, создать строку символов. Если это не первый уникальный идентификатор в наборе записей, создайте другую строку символов. Отметим, что эти строки символов составляют тело письма. Мой код использует свойство Recordset Findfirst, и если есть совпадение, добавьте эту запись в закладки Если запись добавлена ​​в закладки, запустите символьную строку. Если он не помечен закладкой, запустите другую строку символов. Я получаю следующую ошибку:

Ошибка 3077: синтаксическая ошибка (запятая) в выражении

Я не уверен, что эта ошибка появляется, потому что я использую FindFirst в массиве.

requiredTrain = ""
        If tArraySize <> -1 Then
            ID = ""
            For eachTraining = 0 To tArraySize
                ID = PersonnelCompList(eachTraining)
                Debug.Print ID
                IDstring = "PersonnelCompList = " & ID
                Debug.Print IDstring
                rstQueryTrainings.FindFirst IDstring
                If Not rstQueryTrainings.NoMatch Then
                    rstQueryTrainings.Bookmark = varFirstMark
                End If  
                If IsEmpty(rstQueryTrainings.Bookmark) Then
                    requiredTrain = requiredTrain + "<LI>" & "<b>Course</b>: " & ", " & trainingList(eachTraining) & ", <b>Number</b>: " & courseNumList(eachTraining) & ", <b>Link</b>: " & courseNumList(eachTraining) & " | </b>" & statusList(eachTraining) & "</b>" & " (" & daysRemaining(eachTraining) & " days remaining)" & "</LI>"
                Else
                    requiredTrain = requiredTrain + "<b>Personnel Due</b>: " & PersonnelCompList(eachTraining) & "<LI>" & "<b>Course</b>: " & ", " & trainingList(eachTraining) & ", <b>Number</b>: " & courseNumList(eachTraining) & ", <b>Link</b>: " & courseNumList(eachTraining) & " | </b>" & statusList(eachTraining) & "</b>" & " (" & daysRemaining(eachTraining) & " days remaining)" & "</LI>"
                End If
                Debug.Print requiredTrain
            Next eachTraining
        End If

1 Ответ

0 голосов
/ 11 марта 2020

Я не уверен, для чего предназначены закладки. Это должно сделать:

requiredTrain = ""
For eachTraining = 0 To tArraySize
    ID = PersonnelCompList(eachTraining)
    Debug.Print ID
    IDstring = "PersonnelCompList = " & ID
    Debug.Print IDstring
    rstQueryTrainings.FindFirst IDstring
    If rstQueryTrainings.NoMatch Then
        requiredTrain = requiredTrain + "<LI>" & "<b>Course</b>: " & ", " & trainingList(eachTraining) & ", <b>Number</b>: " & courseNumList(eachTraining) & ", <b>Link</b>: " & courseNumList(eachTraining) & " | </b>" & statusList(eachTraining) & "</b>" & " (" & daysRemaining(eachTraining) & " days remaining)" & "</LI>"
    Else
        requiredTrain = requiredTrain + "<b>Personnel Due</b>: " & PersonnelCompList(eachTraining) & "<LI>" & "<b>Course</b>: " & ", " & trainingList(eachTraining) & ", <b>Number</b>: " & courseNumList(eachTraining) & ", <b>Link</b>: " & courseNumList(eachTraining) & " | </b>" & statusList(eachTraining) & "</b>" & " (" & daysRemaining(eachTraining) & " days remaining)" & "</LI>"
    End If
    Debug.Print requiredTrain
Next eachTraining
...