添加 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.Open
或 DoCmd.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:处理表单或报告事件时无法执行操作