Поле со списком доступа для таблицы отображения БД 2-1 Табличное отношение - PullRequest
0 голосов
/ 21 февраля 2019

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

Чтобы нарисовать картинку, в моей БД настроена система отображения, чтобы помочь мне различитьимя и тип данных хранятся в таблице.

Настройка выглядит следующим образом:
-Данной таблицы данных является «LineItems» с идентификатором и данными строки (представьте типичный формат Excel)
Таблица соответствия - «LineItem_Mapper» с LineItem_ID, DataType и Entity_ID
- Вспомогательная таблица «Data_Type» с идентификатором и именем
- две таблицы «Entity» с разными свойствами имеют идентификатор и имя

Причина разделения заключается в типе данных в том, что эти два типа данных ведут себя по-разному.Один тип имеет родительское дочернее отношение, а другой - отдельную строку.Я хочу сохранить эту структуру в моей БД и чувствую, что сделал это с этим отображением.

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

Я хочу, чтобы, когда я выбрал что-то в поле, в таблице сопоставления была создана (или изменена) строка с заполнением всех трех столбцов.сначала LineItem_ID для строки, которую я заполняю, а затем DataType и Entity ID, чтобы отразить правильное отображение.

Может ли Access сделать это самостоятельно?Или мне нужно сделать это с VBA?

1 Ответ

0 голосов
/ 22 февраля 2019

В соответствии с просьбой ОП преобразование моего комментария в качестве ответа (с чуть более подробной информацией):

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

Это должно помочь вам начать:

В свойствах поля со списком перейдите к событиямна вкладке After Update или On Change (посмотрите разницу между двумя событиями, чтобы узнать, какое поведение вы предпочитаете), нажмите стрелку вниз и выберите [Event Procedure], затем нажмите кнопку .Это создаст для вас модуль VBA с функцией, которая запускается при срабатывании выбранного события.

Вы можете использовать DoCmd.RunSQL "[Access SQL INSERT statement]" для добавления записей в таблицы.

Вы можете использовать Me.[MyComboBoxName] чтобы получить текущее значение поля со списком.Точно так же значение чего-либо еще в вашей активной форме.

Вы можете использовать DLookup, чтобы получить значение любой записи в ваших таблицах.

Надеюсь, это даст вам сравнительно быстрый старт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...