用户单击表单上的按钮时,从存储在访问数据库中的路径打开文件

时间:2010-07-21 19:40:34

标签: ms-access vba ms-access-2007 access-vba bookmarks

我是Access VBA开发的新手,并被要求调试并向以前两位开发人员所使用的Access 2007应用程序添加功能。

表单显示数据库中的记录,并显示每条记录的按钮。该按钮应该使用适当的路径打开文件。但是当用户单击该按钮时,它始终使用表单显示的第一条记录中的文件路径,而不是正确记录中的文件路径。

代码看起来正在尝试使用书签打开正确的文件,但如上所述,这是行不通的。以下是按钮点击事件的相关代码。当我尝试Debug.Print form.Bookmark到即时窗口时,它只显示一个问号。

Dim rs As Recordset
Set rs = form.RecordsetClone
rs.Bookmark = form.Bookmark

编辑:根据@ Remou的请求添加更多代码。单击按钮时:

Private Sub OpenFile_Click()
    Form_FilingProcess.Subform_cmdOpenFile_Click Me
End Sub

哪个电话:

Public Sub Subform_cmdOpenFile_Click(frm As Form)
Set rs = frm.RecordsetClone
rs.Bookmark = frm.Bookmark

然后继续打开文件。

2 个答案:

答案 0 :(得分:4)

如果按钮是针对每条记录的,则不需要对记录集进行任何操作。您可以使用控件的名称来获取文件:

TheFile=Me.MyControl

您似乎同时拥有表单和子表单。我猜你的答案是这样的设置:

   |------------------------------|
   |  Main Form                   |
   --------------------------------
    Sub form
   --------------------------------
    Row                     Button
   --------------------------------
    Row                     Button
   --------------------------------

如果按钮的名称是OpenFile,请尝试:

Private Sub OpenFile_Click()
    MsgBox Me.NameOfAContolHere & ""
    'Form_FilingProcess.Subform_cmdOpenFile_Click Me
End Sub

然后可以使用它来打开如下文件:

Private Sub OpenFile_Click()
    FollowHyperlink Me.NameOfControlWithPathToFile
    'Form_FilingProcess.Subform_cmdOpenFile_Click Me
End Sub

答案 1 :(得分:0)

以下是您的子应该是什么样子:

Public Sub Subform_cmdOpenFile_Click(frm As Form) 
  Dim CurrentBookmark as String
  Set rs = frm.RecordsetClone 
  CurrentBookmark = frm.Bookmark
  rs.Bookmark = CurrentBookmark
End Sub

将字符串变量设置为表单书签的值。然后将记录集的书签设置为字符串变量值。

Dim rs As Recordset 
dim CurrentBookmark as String

Set rs = Me.RecordsetClone 

CurrentBookmark = Me.Bookmark
rs.Bookmark = CurrentBookmark 

http://msdn.microsoft.com/en-us/library/aa223967(office.11).aspx