Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Текущая запись при редактировании таблицы Access (http://forum.oszone.net/showthread.php?t=165535)

hasherfrog 29-01-2010 14:40 1333475

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

Ситуация следующая. Есть база, Ms Access 2003, в ней две таблицы, справочная (таблица "Справочник") и какие-то данные (таблица "Данные") для заполнения. Таблица "Данные" имеет два поля (назовём их "Наименование" и "Дополнительно"), которые соответствуют двум аналогичным полям из "Справочник" (также "Наименование" и "Дополнительно"). (По-хорошему, такое поле должно было бы быть одно, но есть определённые специфические вещи, которые заставляют искать решение именно в такой вот ситуации).

Таблица "Справочник" построена с использованием ключевого поля "Наименование", т.е. данные там уникальные. Это поле отражается в соответствующее поле "Наименование" таблицы "Данные" (я повторяюсь). Когда пользователь вводит данные в эту колонку таблицы "Данные" в режиме редактирования таблицы (не через форму!), используется "Мастер подстановок", привязанный к данному полю в режиме конструктора, которые выдает пользователю комбо-бокс, заполненный простейшим запросом "SELECT Справочник.Наименование FROM Справочник;" - тут всё просто. Теперь пользователь может ввести только то, что есть в "Справочник", по идее (но вообще-то изначально там может быть что-то другое, что не соответствует ни одному значению из "Справочник", а попало туда как-то иначе, например копипастом из Excel). Но вот пользователь выбрал то, что нужно, и что есть в "Справочник"...

Теперь пользователь хочет ввести данные во вторую колонку таблицы "Данные", в колонку "Дополнительно", соответствующую колонке "Дополнительно" таблицы "Справочник". По идее, ему должен открыться комбо-бокс, содержащий одно-единственное значение, которое выбирается из таблицы "Справочник" по значению поля "Данные" текущей редактируемой записи. Но оказывается, это не так просто сделать. Мы попросту не знаем этого значения. В режиме редактирования данных таблицы мы не знаем, в какой записи мы находимся, мы не знаем значения полей из этой записи - и не можем сделать запрос.

Как быть?

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

Можно использовать отображение в комбо-боксе ВСЕХ возможных значений поля "Дополнительно" - но это чушь. Значение есть только одно возможное.

Можно просить задавать конкретное значение поля вручную для проведения запроса. Но это тоже чушь - пользователю придется печатать кучу текста, это во-первых; во-вторых, почему-то у меня получается только такой вариант, что запрос отрабатывается лишь один раз - и потом всё время выдаёт в комбо-боксе выбора одно постоянное значение из этой первой выборки.

Есть какие-то решения? Без форм, можно на макросах-запросах и т.д. - но без использования формы.

_______________________

Да, как я и думал. Просмотров - 1.
Видимо, это я.
Вопрос на засыпку, что называется.

Delirium 01-02-2010 01:40 1335559

hasherfrog, а исходничек посмотреть нельзя? Наживую проще думается и наглядней.


Время: 09:43.

Время: 09:43.
© OSzone.net 2001-