1

我是 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

然后它继续打开文件。

4

2 回答 2

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
于 2010-07-21T19:57:16.550 回答
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

于 2010-07-21T20:30:07.450 回答