Автоматизация приложения с помощью VBA: Методические рекомендации по выполнению лабораторной работы, страница 3

"[Поле в таблице]" = '<Пример данных>' .

       '<Пример данных>'  обычно представляется в виде символьной константы. Если же данные являются полем в таблице, то необходимо использовать синтаксис  "&[Поле в рассматриваемой таблице]&"  

При вводе названий полей и критериев для функция DLookup() запрещено использовать пробелы. Эту функцию можно использовать в процедурах VBA и в запросах для отбора данных. Если поле таблицы является текстовым, то его нужно заключать в одинарные кавычки.

Внутренние константы

 Помимо констант, которые поставляются вместе с Access, можно использовать любые константы из библиотек DAO и VBA. Внутренние константы всегда доступны. Имена внутренних констант имеют приставку из двух букв, указывающую на их принадлежность к библиотеке. Константы Access начинаются с букв ac, константы DAO  - с букв db, а константы VBA - с букв vb. Например, константа dbOpenTable открывает таблицу.

        Внутренние константы используются в качестве аргументов в операторах вида DoCmd.Команда.

Технология работы

Создание процедуры для проверки правильности вводимой даты

1.  Откройте форму Заказы в режиме конструктора.

2.  Откройте свойства поля ДатаИсполнения.

3.  Щелкните по кнопке справа от свойства  До обновления и выберите Процедуру обработки событий.

4.  Введите следующую процедуру, которая выводит сообщение о неверной дате,

       Private Sub ДатаИсполнения_BeforeUpdate(Cancel As Integer)

             If [ДатаИсполнения] < [ДатаРазмещения] Then

                   MsgBox "Дата исполнения не может быть раньше даты размещения"

                    Me![ДатаИсполнения].Undo

                    Cancel = True

          End If

       End Sub

С  помощью метода Undo элемента управления происходит отмена изменения в поле  и  аргумент Cancel устанавливается равным True для отмены изменений в буфере записи.

5.  Проверьте работу процедуры, перейдя в режим формы.  Введите неверную дату и нажмите Enter.

Создать функцию для автоматического установления скидки.

1.  Выберите вкладку Модули окна БД и нажмите  Создать.

2.  Введите следующий фрагмент текста программы:

             Function Disc (intQuantity As Integer) As Single

                   Select Case intQuantity

                          Case Is >= 1000

                                Disc = 0.5

                         Case Is >= 500

                                 Disc = 0.4

                         Case Is >= 100

                                Disc = 0.3

                         Case Is >= 50

                                Disc = 0.2

                         Case Is >= 10

                                Disc = 0.1

                         Case Else

                                Disc = 0

                  End Select

            End Function

3.  Выберите опцию меню Debug->Compile,

чтобы  убедиться, что функция не содержит синтаксических ошибок.

4.  Выберите опцию меню View->ImmediateWindow (Окно отладки).

5. В окне отладки введите ? Disc(), поставив в скобки конкретное количество.

6.  Нажмите Enter и проверьте результат.

7.  Сохраните модуль, помня, что его имя не должно совпадать с именем функции.

8.  Откройте форму ЗаказанныйТовар в режиме конструктора.

9.  Убедитесь, что в свойстве Имя поля Количество задано Количество.

10. В свойстве Данные поля Скидка напишите =Disc(NZ([Количество])).

11. Проверьте работу функции, перейдя в режим формы.

Создать процедуры для контроля количества товаров

1.  В запрос – источник записей формы ЗаказанныйТовар дополнительновключите поля НаСкладе, МинимальноеКоличество и Ожидается.

2.  Добавьте эти же поля в область данных формы Заказанный товар.

3.  Предусмотрите выдачу надписи   Недостаточный запас и дополнительное поле НеобходимоЗаказать.

4.  Для свойства формы Текущая запись напишите процедуру :

Private Sub Form_Current()

 If (Me![НаСкладе] + Me![Ожидается]) <= Me![МинимальныйЗапас] Then

   Me![НаСкладе].ForeColor = 255

   Me!НедостаточныйЗапас.Visible = True

   Me!НедостаточныйЗапас.ForeColor=255

 Else

   Me![НаСкладе].ForeColor = 0

   Me!НедостаточныйЗапас.Visible = False

 End If

End Sub

Если сумма значений в полях НаСкладе и Ожидается меньше, чем МинимальныйЗапас, то количество товара задается красным цветом в поле НаСкладе и выводится надпись Недостаточный запас. Если минимальный запас достаточен количество в поле НаСкладе выводится черным цветом, а надпись Недостаточный запас скрывается. Работа процедуры проверяется при курсоре, установленном в поле НаСкладе.

4.  Добавьте при отключенном мастере элементов  в форму ЗаказанныйТовар  кнопку  Заказать.

5.  Для этой кнопки в списке свойств задайте имя и подпись Заказать.

6.  В свойстве Нажатие кнопки напишите процедуру:

      Private Sub Заказать_Click()

          Me![НеобходимоЗаказать] = Me![Минимальный Запас]- (Me![НаСкладе] +

            Me![Ожидается])

        End Sub

7.  В процедуру Текущая запись добавьте строку после ELSE

           Me![НеобходимоЗаказать]=0

Создать процедуру для добавления записи в таблицу

1.  Создайте форму, содержащую кнопку с именем НовыйТип.

2.  В свойстве события кнопки Нажатие кнопки напишите следующую процедуру

      Private Sub НовыйТип_Click()

       Dim dbs As Database, rst As Recordset

         Set dbs = CurrentDb

         Set rst = dbs.OpenRecordset("Типы", dbOpenDynaset)

           With rst

                    .AddNew

                    ![Тип] = "Йогурты"

                    .Update

           End With

       dbs.Close

       End Sub

3.  Откройте форму и проверьте работу кнопки. Просмотрев таблицу Типы,

убедитесь , что запись добавлена.

4.  В форму добавьте поле для ввода типа товара с именем Тип, проверьте,

если поле КодТипа  таблицы Типы не является счетчиком , то нужно будет ввести еще одно поле в форму НовыйТип для ввода значений поля КодТипа

5.  В процедуре исправьте строку  ![Тип] = "Йогурты" на ![Тип] = Me![Тип].

6. 


Проверьте работу формы.

                                     Рис.6.1 Форма для добавления нового типа.

Создать процедуру для удаления записи из таблицы

       В форме для ввода нового типа создайте кнопку Отмена добавления с процедурой следующего вида:

      Private Sub Отмена_добавления _Click()

      Dim dbs As Database, rst As Recordset

      Set dbs = CurrentDb

      Set rst = dbs.OpenRecordset("Типы", dbOpenDynaset)

          With rst

              .MoveLast

              .Delete

          End With

      dbs.Close

      End Sub

Создание процедуры поиска заказчика из Омска

1.  Создайте стандартный модуль:

    Function Поиск()