Всем добра!
Прошу помощи общественности. Ситуация типичная для форума - есть я, который полный ноль в access, и есть база на нем, доставшаяся "в наследство" вместе с парком техники. Учитывая мое незнание, не смог грамотно сформулировать даже контекст для поиска, потому и создаю тему. Может, кто-то аккуратно пошлет в нужном направлении :)
База - самописная на MS Access 2003 кем-то в ходе изучения. Не убивается на предприятии, ибо в ней уже много всего. После активных доработок разработчиком допиливалась по необходимости моими предшественниками. Несколько раз, судя по словам предыдущего товарища, рекавилась.
Собственно, сама история началась с жалобы старшего менеджера на то, невозможно внести ассортимент. "Вот только вчера было можно, а сегодня - уже нет". Анализ бекапов показал, что "вчера" было более трех месяцев назад, еще до моего прихода. Работало "это" следующим образом: старший менеджер тыкал одну из двух кнопок "Муж." или "Жен.", вызывался соответствующий запрос ("Ассортимент муж" или "ассортимент жен") и потом - соответствующая форма (так же "муж." или "жен.", хотя, фактически, форма одинаковая и обращается к одной таблице). После заполнения полей в форме (в табличном виде) обновление базы происходило, но в поле "тип" соответствующей записи "муж." или "жен." уже не попадало (это поле в форме не показывается).
Запросы типовые: из таблицы "ассортимент" читает все поля, при этом поле "тип" не показывает (птица "показывать" снята), но по нему стоит фильтр, а по полю "код материала" читает свойства материала (название и характеристики) из таблицы "материалы". Два одинаковых запроса с разным фильтром.
Я попытался использовать структуру "Ме", но, видимо, она оказалась хитрее - прикрутить не смог. Итогом моих усилий стало добавление в обработку нажатия кнопки следующей строки:
CurrentDb.TableDefs(EditDBName).Fields(EditFieldName).DefaultValue = "Муж." для одной кнопки и "Жен." для другой. И, конечно, предварительно задание переменных.
Костыль ужасный, но в условиях "надо быстро" вполне себя оправдал.
Осталось опасение, что если кто-то полезет помогать старшему менеджеру, то будет неприятный конфликт.
Новым толчком стало желание менеджера "список большой, хочу еще две кнопки" - теперь должно быть четыре критерия: "Обувь муж.", "Обувь жен.", "Одежда муж.", "Одежда жен." В принципе, нарисовать пару кнопок и скопировать костыль еще и на них - я могу. Но, во-первых, не дает покоя мысль о том, что форма получает, по сути, выборку из одной таблицы с параметром, а потому делать четыре одинаковых запроса и четыре формы - неумно. Во-вторых, если уж что-то допиливать, то так, чтобы не было мучительно стыдно за результат. Ну, и в-третьих, не исключаю, что будут (возможно, не мне) задачи на кнопки "обувь дети" и "одежда дети" или обувь/одежда мальч/дев. Хочется унифицировать процесс.
Вызов запроса по нажатию кнопки, как я понимаю, стандартный - DoCmd.OpenForm stDocName, , , stLinkCriteria
Как я понимаю, для выборки из таблицы мне будет достаточно в stDocName указать имя формы и задать stLinkCriteria - тогда не нужно будет запроса в целом и понадобится только одна форма. Но как при добавлении данных в форме сделать, чтобы в поле "тип" записывалась строка, переданная через stLinkCriteria? Вернее, не вся строка, а именно параметр?
Заранее благодарен!
https://www.sql.ru/forum/1313134/currentdb-tabledefs-defaultvalue-kak-plohoy-kostyl