Непрерывная форма MS Access не обновляется

Так что я новичок в Ms Access и VBA. Я пытаюсь создать шаблон календаря посещаемости, где

  • Я рассчитываю код посещаемости на основе посещаемости сотрудника
  • представьте этот код в непрерывной форме, так как количество сотрудников довольно велико

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

Я использовал набор записей DAO для извлечения данных и прочего. Я искал в Интернете повсюду, но не могу найти и ответить, поэтому вот и я.

Проблема:

  • вторая и последующие записи используют идентификационный номер первой записи вместо своего собственного. Текстовое поле «Имя» уже привязано к запросу.

https://i.stack.imgur.com/TLeFJ.png

PS. Я использовал шаблон это как основу для кодирования VBA.

Public Sub Main()

'On Error GoTo ErrorHandler

Call InitVariables
Call InitArray
Call LoadArray
Call PrintArray


'ExitSub:
'    Exit Sub
'ErrorHandler:
'    msgbox "There has been an error. Please reload the form"
'    Resume ExitSub
End Sub

Private Sub InitVariables()
'On Error GoTo ErrorHandler

intMonth = Me.cboMonth
intYear = Me.cboYear
lngFirstDayOfMonth = CLng(DateSerial(intYear, intMonth, 1))
intFirstWeekday = getFirstWeekday(lngFirstDayOfMonth)
intDaysInMonth = getDaysInMonth(intMonth, intYear)

'ExitSub:
'    Exit Sub
'ErrorHandler:
'    msgbox "There has been an error. Please reload the form"
'    Resume ExitSub
End Sub


Private Sub InitArray()
Dim i As Integer

ReDim myArray(0 To 30, 0 To 2)

For i = 0 To 30


    myArray(i, 0) = lngFirstDayOfMonth - intFirstWeekday + 2 + i
    If Month(myArray(i, 0)) = intMonth Then
        myArray(i, 1) = True
        myArray(i, 2) = Day(myArray(i, 0))
    Else
        myArray(i, 1) = False

    End If
Next i

End Sub

Private Sub LoadArray()

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset

Dim rsFiltered As DAO.Recordset
Dim strSQL, strSQLTraxID As String
Dim i As Integer



    'If Not rs.BOF And Not rs.EOF Then

        For i = LBound(myArray) To UBound(myArray)

            If myArray(i, 1) Then

   strSQL = "SELECT EiSyS.Date, [CAM Database].[Trax ID],  [CAM Database].[Full Name], EiSyS.AttendanceCode " _
  & "FROM EiSyS INNER JOIN [CAM Database] ON EiSyS.EmployeeID = [CAM Database].[Trax ID] where EiSyS.Date = CDate('" & Format(myArray(i, 0), "mm/dd/yyyy") & "') and " _
  & "EiSyS.EmployeeID = " & Me.[EmployeeID]

                Set db = CurrentDb
                Set rs = db.OpenRecordset(strSQL)
                Set rsFiltered = rs.OpenRecordset

                Do While (Not rsFiltered.EOF)

                    myArray(i, 2) = rs!AttendanceCode

                    Debug.Print Format(myArray(i, 0), "mm/dd/yyyy") & " - " & rs!AttendanceCode & " - " & Me.[EmployeeID]

                    rsFiltered.MoveNext
                Loop

            End If
        Next i

    'End If

    rsFiltered.Close

    rs.Close

Set rsFiltered = Nothing
Set rs = Nothing
Set rs1 = Nothing

Set db = Nothing


End Sub

Private Sub PrintArray()
'On Error GoTo ErrorHandler

Dim strCtlName As String
Dim i As Integer

For i = LBound(myArray) To UBound(myArray)
    strCtlName = "text" & CStr(i + 1)
    Controls(strCtlName).Tag = i
    Controls(strCtlName) = ""
    Controls(strCtlName) = myArray(i, 2)


Next i


'ExitSub:
'    Exit Sub
'ErrorHandler:
'    msgbox "There has been an error. Please reload the form"
'    Resume ExitSub

End Sub

ваши текстовые поля должны быть привязаны к полю в вашем запросе - все они

dbmitch 25.05.2018 16:08

@dbmitch Мне нужно только одно текстовое поле, и оно уже есть .. Я. [EmployeeID] - это текстовое поле, связанное с идентификатором сотрудника, но, как вы можете видеть, все последующие записи по-прежнему используют данные первого текстового поля ... Возможно, я что-то упустил в петля..

Trevor Shardani 25.05.2018 16:51

@dbmitch Спасибо за понимание .. Я воспользовался вашим предложением, и моя форма работает отлично ^ _ ^. Мне придется использовать VBA для динамического обновления источника записи, хотя ..

Trevor Shardani 25.05.2018 17:31
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
3
268
1

Ответы 1

Использовал предложение @dbmitch для привязки всех текстовых полей к запросу. Я использовал Transform Pivot в исходном запросе, чтобы создать необходимые имена столбцов, сопоставить их и привязать к соответствующим текстовым полям. Я буду использовать VBA для их обновления, если хочу посмотреть на это по-другому, но пока это работает.

Рад, что смог помочь. Если мой комментарий был полезен, всегда приятно отметить это «голосом за». Часть традиции Stack Overflow

dbmitch 26.05.2018 17:32

Другие вопросы по теме