ник: Goblin
Привет. Я уж думал что не заинтересовало. Описать поэтапно. Нравится мне этот сайт головолмками. Лучше кроссвордов. Ну держи. (Возможно что-нить упущу, не факт)
Созданы 2 таблицы. Основная - Таблица1 и подчиненная - Таблица2 В подчиненной форме есть поле КОД, через которое будет привязана к основной таблице через к такому же полю. В таблице1 Код - счетчик. В таблице2 - код числовое.
Далее форма для таблицы1. Вот тут начинается. Источником ее строк является запрос. SELECT Таблица1.*, Таблица2.* FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.ПолеВсе = Таблица2.ПолеВсе1 WHERE (Forms![Форма таблицы 1]!ПолеСоСписком6='0' Or Таблица1!Код=Forms![Форма таблицы 1]!ПолеСоСписком6);
По загрузке. Делай в конструкторе, перейди в рержим sql, скопируй то, что там получилось и вставь в свойство формы "Загрузка". Добавь только впереди Me.RecordSource = и далее в кавычках то, что получилось.
ЗАтем поставь поле со списком для поиска в форме1. Сотри все что там будет в VBA. И как у сампле в примере. Т.е. строишь в конструкторе запрос на таблицу SELECT Таблица1.Код, Таблица1.Поле FROM Таблица1; и также в sql копируешь в буфер. Затем в конструкторе снова делаешь запрос на таблицу, только тут не выводишь поля, а пишешь: там где
поле Код должно быть ставишь 0 а там где поле - "Все" получаешь в sql SELECT 0 AS Выражение1, "Все" AS Выражение2 FROM Таблица1. Затем в режиме sql стираешь позади ; и вместо нее влепляешь union и далее то, что в буфере обмена. Получаешь в итоге запрос на объединение. Текстовые поля с текстовыми,
а счетчик с нулем. Все это копируешь и вставляешь в источник строк поля со списком на форме1. Огранич его списком (Свойства - Данные - Ограничиться списком - Да)
Далее в свойствах, на вкладке События - после обновления Me.Requery - для обновления формы. Отсутствие в списке - то что там есть. Ну а так как добавить запись в такую таблиу можно, но корректировать ее невозможно, создай форму2 на таблицу1, выведи в нее одно поле для корректуры, затем поставь
на форму1 кнопку для открытия этой формы с выбором по значению. (через мастера). Скопируй что получилось в этой кнопке и вставь на (Свойство-события-двойное нажатие кнопки) поле со списком.
Далее подчиненная форма. Создай запрос в конструкторе из 2х таблиц. SELECT Таблица1.*, Таблица2.* FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.ПолеВсе = Таблица2.ПолеВсе1 WHERE (Forms![Форма таблицы 1]!ПолеСоСписком6='0' Or Таблица1!Код=Forms![Форма таблицы 1]!ПолеСоСписком6);
Скопируй то что тут есть и поставь в sql в построителе запросов. Увидишь.
Ну а потом точно так же задай условия для подмены источников данных для форм. критерием которых является поле со списком.
Для главной формы - запрос SELECT Таблица1.*, Таблица2.* FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.Код = Таблица2.Код WHERE (Forms![Форма таблицы 1]!ПолеСоСписком6='0' Or Таблица1!Код=Forms![Форма таблицы 1]!ПолеСоСписком6);
* - все поля, что бы не мучиться. Задаешь условия. Если ..., то такой источник, в остальных случаях... Все через if. Глянь в свойстве формы в загрузке.
Ну и для формы2 запрос в конструкторе SELECT Таблица1.*, Таблица2.* FROM Таблица1 INNER JOIN Таблица2 ON Таблица1.Код = Таблица2.Код WHERE (Forms![Форма таблицы 1]!ПолеСоСписком6='0' Or Таблица1!Код=Forms![Форма таблицы 1]!ПолеСоСписком6);
Затем через if задаешь соответствующие условия какой источник строк в каких условиях. Посмотри в загрузке на форму2.
Теперь главное. А как связать эти формы? да выведи поле [Код], через которое завязаны таблицы, и задай значение по умолчанию в свойствах этого поля (Свойства-данные-Значения по умолчанию) вот это =[Forms]![Форма таблицы 1]![ПолеСоСписком6] Там только видим буквы, а на самом деле - счетчик. Код, ко которому завязаны таблицы. Оно же поиск.
Можно егосделать вручную, но это небольшая возня.
Все остальное добавляешь по вкусу. Понятно?