- •Санкт-Петербургский Государственный Политехнический Университет
- •7 Шагов в базу данных
- •Введение
- •Шаг 1.Разработка технического задания
- •Шаг 2.Создание таблиц
- •2.1.Настройка интерфейса
- •2.2.Структура данных
- •2.3.Создание таблиц.
- •Создание таблицы клиенты
- •Ключевое поле
- •2.4.Связывание таблиц
- •Шаг 3.Создание простых форм для ввода данных
- •3.1.Автоформа.
- •Ленточная форма клиенты
- •3.2.Создание собственного стиля формы.
- •Ленточная форма товары
- •Шаг 4.Создание сложных форм для ввода данных. Мастер форм.
- •4.1.Проект формы.
- •4.2.Создание формы с помощью мастера.
- •4.3.Изменение макета формы.
- •Изменение главной формы.
- •Преобразование поля в поле со списком
- •Улучшение внешнего вида формы
- •Изменение подчиненной формы
- •Автоподстановка цены при выборе товара из списка.
- •Изменение источника данных. Вычисляемые поля в запросе и форме.
- •4.4.Последний штрих.
- •Шаг 5.Построение отчетов.
- •5.1.Прайс-лист. Отчет на базе таблицы. Вид отчета.
- •Базовая таблица
- •Строим автоотчет.
- •5.2.Вывод счета. Отчет на базе нескольких таблиц.
- •Построение базового запроса.
- •Построение отчета мастером.
- •Кнопка печати (просмотра) счета на форме.
- •Шаг 6.Выборка информации из базы.
- •6.1.Создание форм для просмотра информации с фильтрацией данных
- •Определим общий вид формы.
- •Разработку формы начинаем с создания запроса.
- •Создаем ленточную форму.
- •Доводка формы.
- •Изменим имя и подпись кнопки.
- •Изменим источник записей для формы.
- •6.2.Создание отчета по фильтру, заданному в форме.
- •Создание отчета в режиме конструктора.
- •Ставим на форму кнопку открытия отчета с помощью мастера.
- •Шаг 7.Создание меню
- •7.1.Разрабатываем макет меню.
- •Изменяем внешний вид панели.
- •Приложение. Виды запросов. Выборка
- •Другие типы запросов
- •Запрос с условиями отбора
- •Вычисления в запросах
- •Пример с запросом на объединение
Создаем ленточную форму.
По созданному запросу создаем ленточную автоформу.
получаем вот такую форму
Доводка формы.
Теперь ее надо довести до нужного вида, а затем заставить работать.
Расширим заголовок формы и передвинем подписи вниз заголовка.
В верхнюю часть заголовка всавим поле со списком, и два поля для дат
Поставим две кнопки, отключив мастера, чтобы не мешал.
В примечание поставим поле для вычисления итогов
Напишем процедуры, котрые будут изменять источник записей для формы в соотвествии с выбранными (заданными) полями.
Поле со списком для выбора клиента.
Тащим мышкой поле со списком с панели элементов без помощи мастера
Изменяем имя этого поля на удобоваримое (ВыборКлиента)
Устанавливаем источник строк для поля со списком
После выбора таблицы строим запрос на основе этой таблицы (нажимаем кнопочку ... )
Этот запрос можно не сохранять
Изменяем несколько свойств поля.
Число столбцов поставить 2
Связанный столбец – 1 (он и так 1)
Чтобы столбец с кодом клиента не отображался задать его ширину =0
Поле со списком готово.
Поля для ввода дат.
Ставим поле для даты
Изменяем ему имя на ДАТ1 |
Выбираем формат – Краткий формат даты |
Ставим значение по умолчанию текущую дату |
|
|
|
|
|
|
Копируем поле ДАТ1 и изменем в новом поле имя на ДАТ2
Можно поставить значение по умолчанию для даты 1 – текущую дату DATE() – 30 (тогда будет период – последние 30 дней)
Кнопка для показа отобранных записей
Ставим кнопку без мастера.
Изменяем имя и подпись на “ПОКАЗАТЬ”
Получилась вот такая форма
Изменение источника данных для формы.
Изменяем базовый запрос с учетом фильтра.
Открываем базовый запрос в конструкторе и сохраняем его под именем ПродажиКлиентов_F.
В условиях отбора для клиента, и дат строим выражения
Добавляем поля КодКлиента и два раза Дата
В строке ГРУППИРОВКА изменяем в этих полях слово ГРУППИРОВКА на УСЛОВИЕ и строим условия .
Для учета дополнительных условий (пустые поля фильтров) придется строить фильтр программно, проверяя наличие данных в полях формы и формировать условия отбора. Это процесс описан в приложении
Предположим, что в полях фильтра всегда будет выбран клиент и задан период и проверять это мы не будем. Тогда можно обойтись двумя кнопками. Одна кнопка будет выбирать данные из таблиц с учетом фильтра, а другая – просто показывать все записи для всех клиентов за все время существования базы.
Поставим в форме 2 кнопки, напишем на них “ФИЛЬТР” и “ВСЕ”. (Кнопки ставим без мастера.).
Изменим имя и подпись кнопки.
Изменяем кнопку ФИЛЬТР. Изменим ИМЯ кнопки на FiltrKlient.
Изменим источник записей для формы.
В свойствах кнопки ФИЛЬТР . На вкладке “СОБЫТИЯ” выбираем процедуру обработки событий “НАЖАТИЕ КНОПКИ”.
Нажмем на кнопочку с тремя точками и попадем в страшный редактор VBA. Там где окажется курсор напишем две строчки.
Private Sub FiltrKlient_Click()
‘Первая строчка задает в качестве источника записей для формы запрос с фильтрами по клиенту и за период.
Me.RecordSource = "ПродажиКлиентов_Ff"
‘Вторая строчка – обновляет данные в форме.
Me.Requery
End Sub
Аналогичную операцию проделаем с кнопкой для показа всех записей. Кнопку назовем ShowAll
В качестве источника записей в процедуре нажатия кнопки напишем запрос без фильтра (базовый запрос)
Me.RecordSource = "ПродажиКлиентов"
Me.Requery
Сохраним форму и посмотрим, что получилось, выбрав вид “форма”.
