открыть файл из пути, хранящегося в базе данных доступа, когда пользователь нажимает кнопку в форме - PullRequest
1 голос
/ 21 июля 2010

Я новичок в разработке 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 ]

4 голосов
/ 21 июля 2010

Если кнопка предназначена для каждой записи, нет необходимости возиться с набором записей. Вы можете использовать имя элемента управления, чтобы получить файл:

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
0 голосов
/ 22 июля 2010

Вот как должна выглядеть ваша подпрограмма:

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

...