Было бы сложно сделать это с помощью одного органа управления, но с двумя элементами управления, выпадающий список для выбора значения для добавления и текстовое поле, отображающее поле мемо, вы могли бы иметь комбо короба Событие AfterUpdate добавляет запятую и выбранное значение к существующим данным. Что-то вроде этого:
Private Sub cmbChooseKeyword_AfterUpdate()
If Not IsNull(me!cmbChooseKeyword) Then
Me!txtKeywordMemo = (Me!txtKeywordMemo + ", ") & Me!cmbChooseKeyword
End If
End Sub
Вы бы также хотите RowSource вашего комбо-боксе не перечислить предметы, которые уже введены, так что это один из способов, который будет работать в течение относительно короткого списка ключевых слов:
SELECT tblKeywords.*
FROM tblKeywords
WHERE InStr(Forms!MyForm!txtKeywordMemo, tblKeywords.Keyword) = 0;
Тогда вы бы добавить:
Me.Dirty = False
Me!cmbChooseKeyword.Requery
... в конце кода AfterUpdate выше (внутри End If):
:
Private Sub cmbChooseKeyword_AfterUpdate()
If Not IsNull(me!cmbChooseKeyword) Then
Me!txtKeywordMemo = (Me!txtKeywordMemo + ", ") & Me!cmbChooseKeyword
Me.Dirty = False
Me!cmbChooseKeyword.Requery
End If
End Sub
... и вы хотите добавить запрос к событию OnCurrent вашей формы (так что когда вы прибудете в запись, в поле со списком уже отсутствуют любые ключевые слова, которые уже есть в списке).
Теперь, все, что сказал, я бы полностью рекомендовал против этого. Это денормализованный способ хранения данных, и это приводит к проблемам:
Что делать, если вы хотите удалить одно ключевое слово?
что делать, если вы хотите, чтобы ключевые слова были отсортированы в алфавитном порядке?
Что делать, если у вас есть 100 тысяч тысяч записей, и вы хотите найти это поле с помощью LIKE «Ключевое слово *» - будет ли оно болото, чтобы быть ужасно медленным (без индексов, и не используется хорошо, даже если они были)?
Вы действительно должны использовать правильный многие-ко-многим структуру, с дополнительным столом между тем, где вы в настоящее время хранения памятку ключевых слов и список ключевых слов таблице. Это «присоединяется» к двум, и затем дает вам список.
Затем вы можете использовать подформу с выпадающим списком для заполнения каждой строки таблицы соединений.
Если вам нравится представлять ключевые слова в отчетах в виде списка с разделителями-запятыми (как вы их в настоящее время храните), вы можете написать простую функцию для конкатенации для вас на уровне презентации ваших отчетов (функции конкатенации для этой цели часто задаются вопросы доступа на Stackoverflow).
Я думаю, что вы должны рассмотреть ответы ниже, зафиксировать запятую в событии, написать ключевое слово в текстовое поле и очистить комбо для следующего ключевого слова. – Fionnuala