Определите, выбрана ли строка в списке MS Access 2007 - PullRequest
1 голос
/ 14 января 2011

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

Этот вопрос касается части пользовательского интерфейса процесса.Я думаю , что я хочу предоставить пользователю элемент управления List Box с множественным выбором в форме, которая содержит идентификатор константы TableA (и, кстати, скрытый).Список будет заполнен всеми (довольно короткими списками) строк из таблицы B (отображаются описания, идентификаторы в скрытом столбце).При загрузке я бы выбрал те строки списка, которые участвуют в соединении MM.Пользователь может выбирать дополнения и / или отменять выбор удалений.

Я не уверен в том, как определить, выбрана ли какая-либо строка.Я знаю о коллекции IsSelected - если бы я просто добавлял, я бы обошел это с For Each, но мне нужно удалить все, что было отменено, и мне нужно , а не повторно добавить любойэто уже существует.На данный момент я думаю об обходе всего списка, проверке каждого выбранного значения и вставке его, если его еще нет, и проверке каждого un -выбранного значения на возможное удаление (хммм - это начинает звучатьнеоправданно сложный ....).

То, что я начал спрашивать, было: "Как я могу определить, выбрана ли строка (x)?"Я все еще хотел бы получить ответ на этот вопрос, но я также открыт для других предложений по управлению базовой проблемой

1 Ответ

1 голос
/ 14 января 2011

Похоже, у вас есть список, который вы используете для создания выбранных элементов. После того как пользователь обновил список, вы можете сравнить .ItemsSelected со строками списка, которые участвуют в объединении M-M. Недостающие элементы могут быть удалены, а дополнительные элементы могут быть добавлены. Несколько очень грубых заметок:

For Each itm In Me.AList.ItemsSelected
    rsJoinList.Find "ID=" & Me.AList.Column(0, itm)

    If rsJoinList.NoMatch Then
        'To be added
    Else
        'To be deleted
    End If
Next
...