(这是在Access 2003中。) 我正在写一个宏,打开一个表单以允许用户输入他们希望导入的文件的路径和名称。然后它关闭表单,并在指定的文件中导入数据。我有能够正确打开表单和用户输入的代码。一旦我获取路径和文件名,我也有能够导入/处理数据的代码。在宏中使用用户在窗体中输入的信息
我的问题是:如何在窗体关闭后使用宏/其他子表单中输入的信息?
这里是我的窗体的代码简单的版本(“输入导入信息”):
Option Compare Database
Option Explicit
Sub RunButton_Click()
FilePathTextBox.SetFocus
DataPath = FilePathTextBox.Text
FileNameTextBox.SetFocus
DataName = FileNameTextBox.Text
DoCmd.Close
End Sub
这里是我的宏尝试的简单版本(失败):
Option Compare Database
Option Explicit
Option Base 1
Public DataPath As String
Public DataName As String
Public CompleteName As String
Function StartImport()
'Open form to let user enter import file info
DoCmd.OpenForm "Enter Import Info", acNormal, , , , acDialog
'Get complete file path/name. I think this is where the problem is.
CompleteName = DataPath & "\" & DataName
'Import
ImportData
'Data clean up
DataCleanup
End Function
Function ImportData()
'Import CompleteName
'The import code here works fine when CompleteName has the right info
End Function
Sub DataCleanup()
'cleans up the data as needed (using DoCmd.RunSQL). Works fine.
End Sub
我花了在互联网上寻找解决方案的时间超过2小时,但找不到一个解决方案。朋友建议创建一个临时表来将表单中输入的值存储为一个字符串(这意味着该表只有1个字段和1个记录)。但我不知道如何将它作为一个字符串从表中检索出来。
对不起,很长的文章 - 我想尽可能清楚。 谢谢您的帮助!
==============编辑(附加信息)
原始代码的形式请求用户在路径和文件名手动键入。当时整个代码都在工作。然而,我想通过使用FileDialog来确定路径和名称来避免错误/错误,所以我创建了在单击文本框时调用的子文件(FileNameTextBox_Click和FilePathTextBox_Click)。 FileNameTextBox_Click()的代码可以在这里找到:FileDialog doesn't work
这会影响到什么吗?
我与托尼在此。这对我来说可以。你确定你还没有在其他地方宣布Datapath和Dataname吗?顺便说一下,不要使用控制器的文本属性,然后你不必设置焦点,这会在某个阶段导致悲伤。只要说'DataPath = Me.FilePathTextBox' - 我对避免名称混淆很重要。如果你必须有一个属性,使用'.value'即使在控件没有焦点时也是可用的。 – Fionnuala 2012-02-28 11:01:04