Доступ — гиперссылки не связаны

У меня есть форма с созданной пользователем функцией (см. здесь функцию: Добавление кнопки браузера файлов в форму MS Access), чтобы вытащить имя пути к папке в текстовое поле.

В идеале я хочу, чтобы этот текст стал гиперссылкой, которую можно открыть из запроса. Однако для всех записей, которые я добавил из формы, гиперссылка не работает. Я посмотрел в «Редактировать гиперссылку» записи, и там нет адреса. Кроме того, я вручную ввел некоторые записи до того, как создал форму, и их гиперссылки отлично работали, вставляя путь к папке в ячейку, и работают до сих пор.

Я думаю, проблема в том, что функция, которую я использую, возвращает простую строку, есть ли способ преобразовать ее в рабочую гиперссылку, когда она находится в таблице?


person FGLC0983    schedule 05.02.2014    source источник


Ответы (2)


Грубо говоря, функциональное значение поля «Гиперссылка доступа» — это строка, содержащая # символов между «частями гиперссылки». (См. раздел справки Access по Application.HyperlinkPart Method.)

Например, этот DLookup возвращает сохраненное значение для ссылки, которая отображается как AccessApps и ведет к моей папке C:\Users\hans\AccessApps.

? DLookup("url", "tblFoo", "id=1")
AccessApps#C:\Users\hans\AccessApps#

Однако, если я сохраню только строку, содержащую путь к папке...

CurrentDb.Execute "UPDATE tblFoo " & _
    "SET url='C:\Users\hans\AccessApps' " & _
    "WHERE id=4"

... строка сохраняется...

? DLookup("url", "tblFoo", "id=4")
C:\Users\hans\AccessApps

... но поскольку он не содержит # символов, Access не рассматривает его как интерактивную гиперссылку. Это просто текст, который выглядит как ссылка, но нажатие на него ничего не делает.

Тем временем кажется, что вы используете функцию с именем FolderSelection() для выбора строки пути к папке. Если вы хотите сохранить возвращаемое функцией значение в виде гиперссылки, вы можете включить # символов до и после.

"#" & FolderSelection() & "#"

Если вы хотите, чтобы путь к папке отображался как ссылка, но отображался как что-то другое, поместите отображаемую часть перед первым #.

"Click Me!#" & FolderSelection() & "#"
person HansUp    schedule 05.02.2014
comment
Ага! Это то, что означают эти # штучки в полях гиперссылок. Спасибо! +1 - person Gord Thompson; 06.02.2014

Отлично, все работает именно так, как я хотел! Кому интересно, вот отредактированный код:

Private Sub Command26_Click()
Dim strChoice As String
strChoice = FolderSelection
If Len(strChoice) > 0 Then
    Me.Photo_Location = "#" & strChoice & "#"
    ' the "#" & additions around strChoice above complete the hyperlink
Else
    ' what should happen if user cancelled selection?
End If
End Sub

Я предполагаю, что символ # можно было поместить в другое место, но я новичок в этом!

person FGLC0983    schedule 05.02.2014