我有一个非常简单的表格。主要形式是未绑定的。它有一个组合和两个复选框,用于过滤子表单上的结果。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
我创建了一个新应用程序并从旧应用程序中导入了所有对象。我将表单和子表单导出为文本,删除了表单和子表单,然后将文本对象重新导入为表单。这些都没有奏效。
关于如何解决这个问题的任何想法?