0

我有一个非常简单的表格。主要形式是未绑定的。它有一个组合和两个复选框,用于过滤子表单上的结果。VBA 具有默认 sql,用于当表单未过滤和附加条件 where 子句时,当任何过滤器打开或关闭时(在更新组合或选中/取消选中复选框后)。这在其他应用程序中运行良好。出于某种原因,在此应用程序中,如果我多次选中或取消选中这两个框中的任何一个,应用程序就会崩溃。我可以做一次,然后如果我再次选中或取消选中,应用程序就会崩溃。这是表格背面的所有代码:

Private Sub Filters()
    Dim fSQL As String
    Dim nCount As Integer

    fSQL = "SELECT vwu.* FROM vw_UpdateFilterView vwu WHERE 1 = 1 "

    If Nz(Me.cboLocation.Value, 0) <> 0 Then
        fSQL = fSQL & " AND vwu.FKLocation = " & Me.cboLocation.Column(0)
    End If

    If Nz(Me.chkPUpdated, 0) <> 0 Then
        fSQL = fSQL & " AND vwu.ID Not in (Select FKPID From tblUpdatedPAccount)"
    End If

    If Nz(Me.chkNoBlankProfiles, 0) <> 0 Then
        fSQL = fSQL & " AND vwu.ID Not in (Select FKPID From tblUpdatedPAccount)" & " And nz(vwu.User,'')<> ''"
    End If

'Debug.Print Nz(Me.cboLocation.Value, 0) & " cboLocation"
'Debug.Print Nz(Me.chkPUpdated, 0) & " chkPUpdated"
'Debug.Print Nz(Me.chkNoBlankProfiles, 0) & " chkNoAcct"

'Debug.Print fSQL
    Me.frmUpdateMainPeopleAccounts_SubProfiles.Form.RecordSource = fSQL
    Me.frmUpdateMainPeopleAccounts_SubProfiles.Form.Requery
    With Me.frmUpdateMainPeopleAccounts_SubProfiles.Form.RecordsetClone
        If .RecordCount > 0 Then .MoveLast
        nCount = .RecordCount
    End With
    Me.txtCountProfs = nCount & " People Profiles"
End Sub
Private Sub Form_Load()
    cmdReset_Click
End Sub
Private Sub cboLocation_AfterUpdate()
    Filters
End Sub

Private Sub chkPUpdated_Click()
    Filters
End Sub

Private Sub chkNoBlankProfiles_Click()
    Filters
End Sub

Private Sub cmdReset_Click()
    Me.cboLocation.Value = Null
    Me.chkPUpdated.Value = Null
    Me.chkNoBlankProfiles.Value = Null
    Filters
End Sub

Private Sub cmdMain_Click()
    OpenCloseForm "frmMain", "frmUpdatePProfiles", 0
End Sub

这是 Windows 应用程序日志中的事件视图错误。

Faulting application name: MSACCESS.EXE, version: 14.0.7230.5000, time stamp: 0x5c6738e8
Faulting module name: ACECORE.DLL, version: 14.0.7237.5000, time stamp: 0x5d56d4bc
Exception code: 0xc0000005
Fault offset: 0x00059717
Faulting process id: 0x3810
Faulting application start time: 0x01d588e19f4ce5a1
Faulting application path: C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE
Faulting module path: C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACECORE.DLL
Report Id: 344fb181-f4d5-11e9-ad79-e8393534bdd2

我创建了一个新应用程序并从旧应用程序中导入了所有对象。我将表单和子表单导出为文本,删除了表单和子表单,然后将文本对象重新导入为表单。这些都没有奏效。

关于如何解决这个问题的任何想法?

4

0 回答 0