![]() |
Текущая запись при редактировании таблицы Access
Всем привет. Сразу оговорюсь, вопрос для профессиональных пользователей Ms Access.
Ситуация следующая. Есть база, Ms Access 2003, в ней две таблицы, справочная (таблица "Справочник") и какие-то данные (таблица "Данные") для заполнения. Таблица "Данные" имеет два поля (назовём их "Наименование" и "Дополнительно"), которые соответствуют двум аналогичным полям из "Справочник" (также "Наименование" и "Дополнительно"). (По-хорошему, такое поле должно было бы быть одно, но есть определённые специфические вещи, которые заставляют искать решение именно в такой вот ситуации). Таблица "Справочник" построена с использованием ключевого поля "Наименование", т.е. данные там уникальные. Это поле отражается в соответствующее поле "Наименование" таблицы "Данные" (я повторяюсь). Когда пользователь вводит данные в эту колонку таблицы "Данные" в режиме редактирования таблицы (не через форму!), используется "Мастер подстановок", привязанный к данному полю в режиме конструктора, которые выдает пользователю комбо-бокс, заполненный простейшим запросом "SELECT Справочник.Наименование FROM Справочник;" - тут всё просто. Теперь пользователь может ввести только то, что есть в "Справочник", по идее (но вообще-то изначально там может быть что-то другое, что не соответствует ни одному значению из "Справочник", а попало туда как-то иначе, например копипастом из Excel). Но вот пользователь выбрал то, что нужно, и что есть в "Справочник"... Теперь пользователь хочет ввести данные во вторую колонку таблицы "Данные", в колонку "Дополнительно", соответствующую колонке "Дополнительно" таблицы "Справочник". По идее, ему должен открыться комбо-бокс, содержащий одно-единственное значение, которое выбирается из таблицы "Справочник" по значению поля "Данные" текущей редактируемой записи. Но оказывается, это не так просто сделать. Мы попросту не знаем этого значения. В режиме редактирования данных таблицы мы не знаем, в какой записи мы находимся, мы не знаем значения полей из этой записи - и не можем сделать запрос. Как быть? Если бы заполнение таблицы "Данные" шло через форму, можно было бы рассчитывать на значение поля "Наименование" текущей редактируемой в форме записи. Оно бы заполнялось при переходе на эту запись автоматически (или пользователем) - а потом можно было бы его использовать как фильтр или напрямую в запросе. Но в режиме редактирования таблицы напрямую, без формы - мы его не можем достать. Можно использовать отображение в комбо-боксе ВСЕХ возможных значений поля "Дополнительно" - но это чушь. Значение есть только одно возможное. Можно просить задавать конкретное значение поля вручную для проведения запроса. Но это тоже чушь - пользователю придется печатать кучу текста, это во-первых; во-вторых, почему-то у меня получается только такой вариант, что запрос отрабатывается лишь один раз - и потом всё время выдаёт в комбо-боксе выбора одно постоянное значение из этой первой выборки. Есть какие-то решения? Без форм, можно на макросах-запросах и т.д. - но без использования формы. _______________________ Да, как я и думал. Просмотров - 1. Видимо, это я. Вопрос на засыпку, что называется. |
hasherfrog, а исходничек посмотреть нельзя? Наживую проще думается и наглядней.
|
Время: 09:43. |
Время: 09:43.
© OSzone.net 2001-