MS 访问 - 使用子表单筛选时禁止显示保存提示



我有一个表单设置,它有一个子表单窗口和几个命令按钮。 子窗体在交叉表查询中加载,该查询允许用户在导出之前将数据操作到所需的数据集(使用命令按钮导出完成)。 此操作只能一次性使用,并在关闭表单时丢弃。 当表单关闭时,系统提示我保存交叉表查询。 我想找到一种方法来关闭此提示并放弃更改。

澄清一下:打开表单,加载查询,用户将数据筛选为他们要查看/导出的数据,当表单关闭时,会生成保存查询的提示。 仅当应用了筛选器时,才会显示此提示。

我最初尝试设置一个表单以用作子窗体,但很快意识到添加新列时不会创建新控件(这是我使用交叉表的全部原因)。当使用"关闭表单"命令按钮关闭表单时,我有一行代码

DoCmd.Close , , acSaveNo

这很完美。 当以任何其他方式关闭表单时,会出现提示(使用"x"关闭表单,退出数据库等)。 我不想关闭警告,因为这将保存对交叉表查询的更改。 我一直在到处研究解决方法,但我正在使用并且必须使用交叉表查询的事实成为一个重要因素。

我用于将交叉表查询过滤应用于导出命令的代码:

Private Sub ExportCmd_Click()
Dim NewSQL As String
Dim strPart1 As String
Dim strPart2 As String
Dim strPart3 As String
Dim OrigSQL As String
On Error GoTo Cancelled_Export
OrigSQL = CurrentDb.QueryDefs("basicrecordextractcrosstab").SQL
If Forms("exportlogdataform").Controls("Child290").Form.Filter & vbNullString = vbNullString Then
NewSQL = OrigSQL
Else
strPart1 = Left(OrigSQL, InStr(1, OrigSQL, "GROUP BY", vbTextCompare) - 1)
strPart2 = "WHERE " & Replace(Forms("exportlogdataform").Controls("Child290").Form.Filter, "[BasicRecordExtractCrosstab].", "", , , vbTextCompare)
strPart3 = Right(OrigSQL, Len(OrigSQL) - Len(strPart1))
NewSQL = strPart1 & strPart2 & Chr(13) & strPart3
End If
CurrentDb.QueryDefs("basicrecordextractcrosstab").SQL = NewSQL
DoCmd.OutputTo acOutputQuery, "BasicRecordExtractCrosstab", "ExcelWorkbook(*.xlsx)", "", True, "", , acExportQualityPrint
Restore_SQL_Def:
CurrentDb.QueryDefs("basicrecordextractcrosstab").SQL = OrigSQL
Exit Sub
Cancelled_Export:
If Err = 2501 Then
MsgBox "Export to Excel Action Cancelled", vbInformation + vbOKOnly, "Export Cancelled"
ElseIf Err = 2302 Then
MsgBox "Unable to save export file.  Make sure the file is not currently open.", vbExclamation + vbOKOnly, "Export Failed"
Else
MsgBox Err & ": " & Error$
End If
Resume Restore_SQL_Def
End Sub

我不想走这条路,但我硬编码了默认的SQL定义,并在表单加载时关闭了警告。 我在表单的关闭事件中重新打开了警告。

Private Sub Form_Load()
Dim OrigSQL as String
OrigSQL = "Default SQL Def string here"
CurrentDb.QueryDefs("basicrecordextractcrosstab").SQL = OrigSQL
DoCmd.SetWarnings False
End Sub
Private Sub Form_Close()
DoCmd.SetWarnings True
End Sub

相关内容

最新更新