Устанавливаем источник строк для поля со списком

Устанавливаем источник строк для поля со списком - student2.ru

После выбора таблицы строим запрос на основе этой таблицы (нажимаем кнопочку ...)

Устанавливаем источник строк для поля со списком - student2.ru

Этот запрос можно не сохранять

Изменяем несколько свойств поля.

  • Число столбцов поставить 2
  • Связанный столбец – 1 (он и так 1)
  • Чтобы столбец с кодом клиента не отображался задать его ширину =0

Устанавливаем источник строк для поля со списком - student2.ru

Поле со списком готово.

Поля для ввода дат.

Ставим поле для даты

Изменяем ему имя на ДАТ1 Выбираем формат – Краткий формат даты Ставим значение по умолчанию текущую дату
  Устанавливаем источник строк для поля со списком - student2.ru Устанавливаем источник строк для поля со списком - student2.ru
     

Копируем поле ДАТ1 и изменем в новом поле имя на ДАТ2

Можно поставить значение по умолчанию для даты 1 – текущую дату DATE() – 30 (тогда будет период – последние 30 дней)

Кнопка для показа отобранных записей

Ставим кнопку без мастера.

Устанавливаем источник строк для поля со списком - student2.ru

Изменяем имя и подпись на “ПОКАЗАТЬ”

Получилась вот такая форма

Устанавливаем источник строк для поля со списком - student2.ru

Изменение источника данных для формы.

Изменяем базовый запрос с учетом фильтра.

Открываем базовый запрос в конструкторе и сохраняем его под именем ПродажиКлиентов_F.

В условиях отбора для клиента, и дат строим выражения

Устанавливаем источник строк для поля со списком - student2.ru

Добавляем поля КодКлиента и два раза Дата

В строке ГРУППИРОВКА изменяем в этих полях слово ГРУППИРОВКА на УСЛОВИЕ и строим условия .

Для учета дополнительных условий (пустые поля фильтров) придется строить фильтр программно, проверяя наличие данных в полях формы и формировать условия отбора. Это процесс описан в приложении

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

Поставим в форме 2 кнопки, напишем на них “ФИЛЬТР” и “ВСЕ”. (Кнопки ставим без мастера.).

Изменим имя и подпись кнопки.

Изменяем кнопку ФИЛЬТР. Изменим ИМЯ кнопки на FiltrKlient.

Устанавливаем источник строк для поля со списком - student2.ru

Изменим источник записей для формы.

В свойствах кнопки ФИЛЬТР . На вкладке “СОБЫТИЯ” выбираем процедуру обработки событий “НАЖАТИЕ КНОПКИ”.

Устанавливаем источник строк для поля со списком - student2.ru

Нажмем на кнопочку с тремя точками и попадем в страшный редактор VBA. Там где окажется курсор напишем две строчки.

Private Sub FiltrKlient_Click()

‘Первая строчка задает в качестве источника записей для формы запрос с фильтрами по клиенту и за период.

Me.RecordSource = "ПродажиКлиентов_Ff"

‘Вторая строчка – обновляет данные в форме.

Me.Requery

End Sub

Аналогичную операцию проделаем с кнопкой для показа всех записей. Кнопку назовем ShowAll

В качестве источника записей в процедуре нажатия кнопки напишем запрос без фильтра (базовый запрос)

Me.RecordSource = "ПродажиКлиентов"

Me.Requery

Сохраним форму и посмотрим, что получилось, выбрав вид “форма”.

Устанавливаем источник строк для поля со списком - student2.ru

Наши рекомендации