Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Dim strWhereCategory As String↑ ⇐ ПредыдущаяСтр 3 из 3 Содержание книги
Поиск на нашем сайте
' объявление переменной для условия отбора данных strWhereCategory = "Код_поставщика = Forms![Отчеты о продажах]!Spisok" ‘ создание строки отбора данных ‘ создание выбора вида отображения формы Select Case Me!grpOtchet Case 1 DoCmd.OpenForm "Приход", acNormal ' открытие формы в обычном режиме просмотра Case 2 DoCmd.OpenForm "Сводная форма", acFormPivotTable ' открытие формы в режиме сводной таблицы Case 3 If IsNull(Forms![Отчеты о продажах]!spisok) Then DoCmd.OpenForm "Приход", acNormal Else DoCmd.OpenForm "Приход", acNormal,, strWhereCategory ' открытие формы в обычном режиме просмотра с фильтром End If End Select DoCmd.Close acForm, "Отчеты о продажах" ' закрытие текущей формы End Sub
Разберем смысл кода приведенного в листинге 3. Объект DoCmd — это "рабочая лошадка" программирования в Access. Этот объект позволяет программным образом выполнять макрокоманды Access. У объекта DoCmd нет свойств, только методы. Приводить здесь методы DoCmd с комментариями нет никакого смысла — эти методы в точности соответствуют набору действий в конструкторе макрокоманд. Ключевое слово Me! используется для указания элементов к текущей форме. Например, чтобы обратиться к группе переключателей на форме достаточно написать Me!grpOtchet. Для перебора значений группы переключателей используется стандартная условная конструкция Select Case …. End Select, где внутри созданы блоки перебора Case трех значений, соответствующих трех видов отчетов. Для открытия соответствующей формы в зависимости от вида отчета используется метод OpenForm. Вы можете использовать метод OpenForm для того, чтобы раскрыть форму в виде формы, в режиме конструктора формы, предварительного просмотра перед печатью, или Datasheet. Вы можете выбрать режимы ввода данных и окна для формы и ограничить записи, которые форма показывает. Синтаксис его следующий:
OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode
Описание аргументов метода:
Например, код DoCmd.OpenForm "Приход", acNormal откроет форму "Приход" в обычном режиме просмотра. А код: DoCmd.OpenForm "Сводная форма", acFormPivotTable откроет форму "Сводная форма" в режиме сводной таблицы.
Самое сложное в нашем программном коде – это создание условия отбора данных. С этой целью была объявлена переменная strWhereCategory строкового типа. Условие отбора в форме «Приход» только тех записей, которые соответствуют названию поставщику, выбранному в списке текущей формы «Отчеты о продажах», выглядит так: strWhereCategory = "Код_поставщика = Forms![Отчеты о продажах]!Spisok"
где Код_поставщика – поле в форме, которую будете открывать и по которому производите выборку данных (в нашем случае это поле из формы Приход) Forms![Отчеты о продажах]!Spisok – обращение к выбранному значению списка на форме «Отчеты о продажах». При этом условие strWhereCategory – является условием языка SQL, где используются специальные конструкции языка. В частности для обращения к семейству всех форм используется объект Forms. Затем указывается имя формы, затем имя элемента управления. Разделителем между именами служит знак восклицания. Если в именах присутствуют пробелы, то они заключаются в квадратные скобки.
Таким образом, например, в результате выбора пользователем из списка названия – МЧП Белинда будет передано значение "Код_поставщика = 2" где «МЧП Белинда» имеет код =2. Поэтому после нажатия кнопки «Просмотр формы» вам будет открыта форма с двумя записями с поставщиком МЧП Белинда.
Метод Close применяется для закрытия определенного вида объекта. Синтаксис метода: Expression.Close(ObjectType, ObjectName, Save) Аргументы метода:
Поэтому в нашем случае мы записали: DoCmd.Close acForm, "Отчеты о продажах" Что соответствует закрытию формы "Отчеты о продажах".
Для того, чтобы учесть период дат, необходимо добавить условный блок на проверку значения в флаге. Если флаг не установлен, то не выполнять сортировку записей по датам. А если флаг выбран, то выполнять сортировку по датам. Такими условными конструкциями будут If flag.Value = False Then End If и If flag.Value = true Then End If
Для отбора записей с учетом периода дат необходимо объявить новую строковую переменную для создания условия, а именно переменную strWhereCategory2. Чтобы выполнить выборку данных в периоде дат воспользуемся уже знакомой конструкцией Between..And. Аналогично с запросами, условная строка будет иметь вид: strWhereCategory2 = "Дата_накладной Between Forms![Отчеты о продажах]!txtNach And Forms![Отчеты о продажах]!txtConch" где txtNach – значение текстового поля с начальной датой, а txtConch – значение текстового поля с конечной датой. А для отбора записей с учетом периода дат и названия поставщиков необходимо объявить строковую переменную strWhereCategory3. Для объединения двух условий воспользуемся логической функцией And. Условная строка будет иметь вид: strWhereCategory3 = "Код_поставщика = Forms![Отчеты о продажах]!Spisok And Дата_накладной Between Forms![Отчеты о продажах]!txtNach And Forms![Отчеты о продажах]!txtConch" где txtNach – значение текстового поля с начальной датой, а txtConch – значение текстового поля с конечной датой. Окончательно программный код будет иметь вид, приведенный в листинге 4. Листинг 4. Обработчик события нажатия кнопки «Просмотр форм» Private Sub comOpenForm_Click() Dim strWhereCategory1 As String Dim strWhereCategory2 As String strWhereCategory1 = "Код_поставщика = Forms![Отчеты о продажах]!Spisok" strWhereCategory2 = "Дата_накладной Between Forms![Отчеты о продажах]!txtNach And Forms![Отчеты о продажах]!txtConch" strWhereCategory3 = "Код_поставщика = Forms![Отчеты о продажах]!Spisok And Дата_накладной Between Forms![Отчеты о продажах]!txtNach And Forms![Отчеты о продажах]!txtConch" If flag.Value = False Then Select Case Me!grpOtchet Case 1 DoCmd.OpenForm "Приход", acNormal Case 2 DoCmd.OpenForm "Сводная форма", acFormPivotTable Case 3 If IsNull(Forms![Отчеты о продажах]!spisok) Then DoCmd.OpenForm "Приход", acNormal Else DoCmd.OpenForm "Приход", acNormal,, strWhereCategory1 End If End Select End If If flag.Value = True Then Select Case Me!grpOtchet Case 1 DoCmd.OpenForm "Приход", acNormal,, strWhereCategory2 Case 2 DoCmd.OpenForm "Сводная форма", acFormPivotTable,, strWhereCategory2 Case 3 If IsNull(Forms![Отчеты о продажах]!spisok) Then DoCmd.OpenForm "Приход", acNormal Else DoCmd.OpenForm "Приход", acNormal,, strWhereCategory3 End If End Select End If DoCmd.Close acForm, "Отчеты о продажах" End Sub Сохраните процедуру, выйдите из редактора VBA, сохраните форму, перейдите в режим просмотра. Для того, чтобы проверить работоспособность нашего сложного обработчика событий выполним следующее: - выберите из списка Вид отчета – Продажи по всем поставщикам и нажмите кнопку Просмотр формы. Если вы верно выполнили все вышестоящие инструкции, то у вас должна отобразится форма Приход. Закройте форму Приход. - выберите из списка Вид отчета – Продажи по определенному поставщику, из списка Поставщики – выберите любого поставщика, например МЧП Олимпийский, и нажмите кнопку Просмотр формы. Если вы верно выполнили все вышестоящие инструкции, то у вас должна отобразится форма Приход с примененным фильтром на выбранного поставщика. Закройте форму Приход. - выберите из списка Вид отчета – Сводный отчет с итогами, установите начальную дату – 1.01.2001, конечную дату – 1.01.2010, установите флажок учитывать период дат, и нажмите кнопку Просмотр формы. Если вы верно выполнили все вышестоящие инструкции, то у вас должна отобразится сводная форма с примененным фильтром дат. Закройте сводную форму.
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-15; просмотров: 455; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.133.251 (0.01 с.) |