2016-11-25 8 views
0

Прошу прощения за, наверное, глупый вопрос, но я уже не знаю, какие слова использовать для поиска того, что мне нужно. У меня хороший опыт программирования, но я довольно новичок в Access.Как пользователь может забрать несколько записей в таблице

У меня есть форма с элементами управления, также она имеет подчиненную форму с списком контактов только для чтения. Этот список заполняется динамическим запросом из нескольких таблиц, поэтому я не знаю во время разработки счет и имена всех полей. Пользователь хочет иметь возможность вручную выбрать несколько контактов из списка, чтобы отправить им одно электронное письмо.

Я использовал для управления таблицей, чтобы пользователь мог выбрать несколько записей (обычно с помощью ctrl). Но оказалось, что в Access Access Dataet разрешен непрерывный выбор.

Затем я подумал о добавлении редактируемого столбца флажка в таблицу readonly, где пользователь сможет отмечать нужные строки. Но я не нашел способ сделать это в Access. Кажется, что метод Append в коллекции Fields доступен только для таблиц и индексов, но не для запросов или наборов записей.

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

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

ответ

1

Если вы хотите получить спецификацию (для фильтрации, сортировки, изменения размера), то редактируемый флажок - это действительно ваш единственный вариант.

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

В подформе вы можете установить все элементы управления, кроме флажка, до Locked = True.

+0

Должен ли я создать временную таблицу для этого и заполнять ее каждый раз, когда я заполняю таблицу данных? Это звучит довольно странно для меня. Действительно ли это обычная практика в Access? – Sergey

+0

Да. - «Обычная» практика IMHO - это многопользовательский список. Но если вам нужны дополнительные функции таблицы данных, для выбора произвольных записей необходим редактируемый столбец. – Andre

1

Это можно сделать, используя свойство RecordsetClone подформы. Вот пример:

Sub GetSelectedValue() 

Dim rs as Recordset 
Dim sContact as String 

Set rs = Me.[SubFormName Goes Here].Form.RecordsetClone  
rs.MoveFirst 
rs.Move Me.[SubFormName Goes Here].Form.SelTop - 1 
sContact = rs![Recordset Column Name Goes Here] 

Set rs = Nothing 
End Sub 

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

+0

Спасибо, Крейг. Я думаю, что это тоже хороший подход, но я уже сделал это по предложению Андре. – Sergey

+0

Пока у вас есть программа, которая вам нравится, тогда все хорошо. :-) –