Ошибка в MS Access: ошибка времени выполнения «424»: требуется объект - PullRequest
0 голосов
/ 23 сентября 2018

В настоящее время я делаю кнопку, которая должна обновить таблицу с данными из подчиненной формы (которая связана с другой таблицей).Предполагается, что он принимает данные только тех записей, чьи флажки (fldFlag) проверяются пользователем.

Это код, в котором у меня возникают проблемы

If tblCoverageBatch.fldFlag = True Then

Если это поможет, пожалуйста, найдитениже всего кода

Private Sub CmdAssignSTOT_Click()
'Declarations
Dim ask As String
Dim x As Integer
Dim DB As DAO.Database
Dim rst As DAO.Recordset
'popup message box to confirm save
ask = MsgBox("Do you want to save new STOT entry?", vbQuestion + vbYesNo, "System message...") = vbYes
    If ask = True Then
        'initialize value of incrementing variable x
        x = 0
        Set DB = CurrentDb
        Set rst = DB.OpenRecordset("STOTCoverageBatchAssigned") 'setting the table
        Do While x < DCount("[ID]", "[STOTCoverageBatchUnassigned]") 'actions below to be performed until the last record
            If tblCoverageBatch.fldFlag = True Then 'actions below will only be performed when their tickbox fldFlag is ticked.
                With rst 'encoding!
                .Edit
                    ![STOTNo] = Me.STOTNo
                    ![STOTDate] = Me.STOTDate
                    ![BatchNo] = STOTCoverageBatchUnassigned.BatchNo
                    ![PCICCheck] = STOTCoverageBatchUnassigned.CompleteDocsPCIC
                    ![ARBCheck] = STOTCoverageBatchUnassigned.CompleteDocsARB
                    ![PCICDocsReceivedDate] = STOTCoverageBatchUnassigned.PCICDocsReceivedDate
                    ![ARBDocsReceivedDate] = STOTCoverageBatchUnassigned.ARBDocsReceivedDate    
                .Update
                End With
                x = x + 1 'increment x by 1 to move on to the next record
            End If
        Loop
    Me.STOTNo.Value = Nz(DLast("STOTNo", "tblSTOT"), 0) + 1 'increment STOT number in the STOTNo field  only when actions above have been performed
    End If
End Sub`

Спасибо!

1 Ответ

0 голосов
/ 23 сентября 2018

Попробуйте это:

Private Sub CmdAssignSTOT_Click()

    'Declarations
    Dim ask As Boolean
    Dim x As Integer
    Dim DB As DAO.Database
    Dim rst As DAO.Recordset

    'popup message box to confirm save
    ask = MsgBox("Do you want to save new STOT entry?", vbQuestion + vbYesNo, "System message...") = vbYes

    If ask = True Then
        'initialize value of incrementing variable x
        Set DB = CurrentDb
        Set rst = DB.OpenRecordset("STOTCoverageBatchAssigned") 'setting the table

        While Not rst.EOF
            If rst.fldFlag.Value = True Then 'actions below will only be performed when their tickbox fldFlag is ticked.
                With rst 'encoding!
                    .Edit
                        ![STOTNo] = Me.STOTNo
                        ![STOTDate] = Me.STOTDate
                        ![BatchNo] = Me!STOTCoverageBatchUnassigned.BatchNo
                        ![PCICCheck] = Me!STOTCoverageBatchUnassigned.CompleteDocsPCIC
                        ![ARBCheck] = Me!STOTCoverageBatchUnassigned.CompleteDocsARB
                        ![PCICDocsReceivedDate] = Me!STOTCoverageBatchUnassigned.PCICDocsReceivedDate
                        ![ARBDocsReceivedDate] = Me!STOTCoverageBatchUnassigned.ARBDocsReceivedDate    
                    .Update
                    .MoveNext
                End With
                Me!STOTNo.Value = Nz(DMax("STOTNo", "tblSTOT"), 0) + 1 'increment STOT number in the STOTNo field  only when actions above have been performed
            End If
        Wend
        rst.Close
    End If

Однако будет использоваться текущая запись только в подчиненной форме, чего я не знаю, если вы хотите, так как не совсем понятно, что вы пытаетесьвыполнить.End Sub

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