Создание нескольких ссылок в текстовом поле Access

У меня есть форма в Access 2016 с текстовым полем, в котором мне нужно иметь несколько гиперссылок, разделенных точкой с запятой (которые будут создаваться динамически). Что я решил сделать, так это создать «строку построения гиперссылки» в VBA, а затем присвоить ее значению текстового поля. Итак, что-то вроде:

Me.Field.Value = {link: www.google.com : "Google"} & "; " & {link: www.yahoo.com : "Yahoo"}

... приведет к тому, что это будет в текстовом поле:

Google; Yahoo

Моя проблема в том, что я не могу понять синтаксис для создания отдельной ссылки в текстовом поле, не превращая все текстовое поле в одну гиперссылку, что не сработает.

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

"Google # www.google.com # Some Argument"

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

"{\field{\*\fldinst HYPERLINK ""http://www.google.com/""}{\fldrslt http://www.google.com}}"

Я также подумал о разработке запроса, который будет возвращать гиперссылки. Но я как бы хотел сделать это с помощью VBA, потому что у меня будет больше гибкости в том, как я создаю ценность. У кого-нибудь есть какие-либо идеи?

Примечание. Я понимаю, что в реляционной базе данных 1:M должно быть несколько значений. Они есть. Но требования задачи заключаются в том, чтобы получить все значения M для объекта 1, а затем перечислить их через точку с запятой с разделителями, которые все служат ссылками на таблицу сведений для объекта M.


person Christine    schedule 21.07.2016    source источник
comment
УРА! Я получил плюс! Теперь я чувствую, что все в порядке.   -  person Christine    schedule 22.07.2016


Ответы (1)


Обычные текстовые поля (только текст) не поддерживают это.

Это возможно с текстовыми полями Rich text. В отличие от названия, они на самом деле используют подмножество HTML, а не RTF.

С идеями из здесь У меня это работает:

Private Sub cmdInsertHyperlinks_Click()

    Dim url1 As String, url2 As String

    url1 = "D:\tmp\test.jpg"
    url2 = "D:\tmp\test space.txt"

    Me.rText.Value = "<div>" & _
        "<a href = " & url1 & ">file://" & url1 & "</a>" & _
        "  other text between hyperlinks  " & _
        "<a href = " & url2 & ">file://" & url2 & "</a>" & _
        "</div>"


End Sub

Примечание: связанный поток говорит, что вы должны URL-кодировать ссылки (пробел до% 20 и т. д.), но, по крайней мере, для моего простого теста в этом не было необходимости.

Примечание 2. У вас не может быть другого отображаемого текста и URL-адреса ссылки, по крайней мере, у меня это не сработало.

person Andre    schedule 22.07.2016
comment
Когда вы говорите текстовые поля с форматированным текстом, вы имеете в виду стандартное текстовое поле, установленное на форматированный текст? Я не вижу элемент управления Rich Text Textbox. Как насчет списка? Есть ли способ перечислить ссылки в динамически растущем списке? - person Christine; 22.07.2016
comment
Да, это то, что я имел в виду. Поле со списком было бы совсем другим, там вы можете динамически добавлять элементы и реагировать на события щелчка отдельных элементов. - person Andre; 22.07.2016
comment
На самом деле, теги div и a не имеют никакого значения. Если вы просто установите значение file://D:\tmp\test.jpg без тегов div и a, ссылка будет создана точно так же. - person Christine; 23.07.2016
comment
@Hill, большое спасибо - добавление file:// в начало имени файла сделало именно то, что мне было нужно. - person DRC; 20.09.2017