添加 DoCmd.Close 行时访问未关闭

Posted

技术标签:

【中文标题】添加 DoCmd.Close 行时访问未关闭【英文标题】:Access not closed when added DoCmd.Close line 【发布时间】:2017-01-12 22:32:04 【问题描述】:

我已添加DoCmd.Close acQuery, "Import", acSaveNo

即使使用这行代码,我的访问窗口也不会关闭。

Option Compare Database

Option Explicit
Public Function Import()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim intFile As Integer
Dim strFilePath As String
Dim intCount As Integer
Dim strHold
strFilePath = "C:\Transfer\FromSynapseTest\TEST.csv"
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Import", dbOpenForwardOnly)
intFile = FreeFile
Open strFilePath For Output As #intFile
Do Until rst.EOF
   If CDate(rst(3)) >= Date And rst(98) <> 0 Then
       For intCount = 0 To rst.Fields.Count - 1
           strHold = strHold & rst(intCount).Value & "|"
       Next
       If Right(strHold, 1) = "|" Then
           strHold = Left(strHold, Len(strHold) - 1)
       End If
       Print #intFile, strHold
   End If
   rst.MoveNext
   strHold = vbNullString
Loop
Close intFile
rst.Close
Set rst = Nothing

DoCmd.Close acQuery, "Import", acSaveNo
End Function

由于我是通过宏调用函数,我觉得我做不到

Sub subToCloseForm

    DoCmd.Close

End Sub

我还根据我阅读的 http://www.blueclaw-db.com/docmd_close_example.htm 尝试了 DoCmd.Close acQuery, " ", acSaveNo:如果将 objecttype 和 objectname 参数留空(默认常量 acDefault 被假定为 objecttype),Microsoft Access 将关闭活动窗口

任何帮助将不胜感激。谢谢。

【问题讨论】:

也许退出 MS Access 是不可能的??请问有什么输入吗? ***.com/questions/12063404/… 如果您只想关闭 Access,只需使用 'Application.Quit' 什么窗口?关闭整个访问?我不理解你的整体问题。调用查询的 DAO 记录集是一个后台进程,不需要调用 DoCmd.OpenDoCmd.Close @Parfait 谢谢你的评论!我的意思是整个访问窗口! 【参考方案1】:

您根本不需要代码DoCmd.Close acQuery, "Import", acSaveNo。此命令尝试关闭查询“导入”,但您没有打开此查询。您根据此查询打开了一个记录集,并正确关闭了该记录集。

如果您需要关闭名称为“导入”的表单,请使用

DoCmd.Close acForm, "Import", acSaveNo

【讨论】:

【参考方案2】:

如果您希望完全关闭 Access,请使用:

Application.Quit

【讨论】:

它完全关闭它而不处理导入代码。我该怎么办?【参考方案3】:

您的代码行DoCmd.Close acQuery, "Import", acSaveNo 不是必需的,因为您打开的是记录集,而不是查询。 rst.close 并设置 rst = 没有足够的内存管理。

附带说明,我建议包含一个 if 语句来单步执行您的记录集。如果记录集为空白,如果未选中,您将收到错误消息。尝试在这个 if 语句中插入你的 for 循环:

If not rst.eof and not rst.bof then
     'for loop...

end if

【讨论】:

感谢您的评论。将尝试 if 语句!

以上是关于添加 DoCmd.Close 行时访问未关闭的主要内容,如果未能解决你的问题,请参考以下文章

关闭表单上的错误 2585:处理表单或报告事件时无法执行操作

剑道网格 - 如何在添加/编辑子行时访问父行模型(详细网格)

在 node.js 中运行时未定义要求

MS 访问查询未在 Excel 中正确运行

在 C++ 中声明、操作和访问未对齐的内存 [关闭]

while循环PHP中的未定义变量错误-访问[关闭]