- •Содержание
- •Алгоритмизация и программирование vba введение
- •1 Макросы
- •На панели быстрого запуска
- •2. Алгоритмизация
- •2.1 Алгоритм. Общие сведения.
- •Форма записи алгоритма на естественном языке
- •2.3 Графическая форма записи алгоритма
- •2.4 Правила оформления схем алгоритмов
- •2.5 Основные этапы подготовки и решения задачи на компьютере
- •2.6 Постановка задачи. Разработка математической модели
- •Складских помещений
- •Равным плану d в виде блок-схемы
- •Массива по строкам
- •3 Язык программирования
- •Функции InputBox
- •Воды предприятием и номера месяца с минимальным расходом в виде блок-схемы
- •Программирование на vba в microsoft office
- •4.1 Программирование на vba в Excel
- •(Для наглядности выделен)
- •В нём активной ячейки
- •В формуле ячейки
- •Change объекта WorkSheet
- •4.2 Программирование на vba в Word
- •4.3 Программирование на vba в PowerPoint
- •«Элементы управления»
- •5 Технология организации, хранения и обработки данных
- •5.1 Общие сведения
- •5.2 Листинг программы
- •5.3 Алгоритм программы
- •5.4 Результат работы
- •Список использованных источников
5 Технология организации, хранения и обработки данных
5.1 Общие сведения
В каждом VBA-приложении есть свой уникальный набор объектов с их собственными свойствами (характеристиками состояния) и методами (командами обработки этих свойств). Управление состоянием элемента осуществляется с помощью посылаемых ему сообщений, указывающих объекту на необходимость выполнить тот или иной метод для достижения результата.
Сами сообщения генерируются системой в ответ на действия пользователя или действия других функционирующих в системе программ, называемых в этом случае событиями.
В объектном программировании есть понятие класса. Это некий проект, на основе которого создаётся конкретный объект. Класс определяет назначение объекта, его свойства и те действия, которые могут быть выполнены над этим проектом. Нам неинтересен сам по себе объект, но важно то, какие действия можно с ним совершить и какими свойствами он обладает. В системе хранится программное описание каждого используемого класса, на основании которого, при необходимости, создаются экземпляры класса. Например: описан класс кнопки, которую будем отражать в окнах приложения. Каждая отдельная кнопка — экземпляр объекта этого класса и создаётся на основании этого описания, но отличается от других некоторыми свойствами (размер, цвет, положение на экране и т. п.). Кроме методов и свойств есть понятие события. Это некоторое действие, которое можно выполнять с объектом и на которое надо программировать отклик (ответную реакцию системы).
Процедура Property — используется для ссылки на свойство объекта. Данный тип процедур применяется для установки или получения значения пользовательских свойств форм и модулей.
Модуль — это именованная единица, состоящая из одной или нескольких процедур и раздела объявлений, в котором объявляются переменные, константы и пользовательские типы данных, а также устанавливаются параметры компилятора. Имеется три типа модулей:
Стандартные модули — это модули, в которых можно описать доступные во всем проекте процедуры.
Модули класса содержат описание объекта, который является членом класса. Процедуры, написанные в модуле класса, используются только в этом модуле. Среди модулей класса выделяют модули форм и отчетов, которые связаны с конкретной формой или отчетом. Модули форм и отчетов часто содержат процедуры обработки событий, которые срабатывают в ответ на событие в форме или отчете. Процедуры обработки событий используются для управления поведением форм и отчетов и их реакцией на действия пользователя типа щелчка мыши на кнопке.
Проект — включает в себя все модули, формы и связанные с приложением объекты, относящиеся к конкретному документу, причём проект сохраняется вместе с самим этим документом. В проекте данной работы используется один стандартный модуль — Module 1 (для процедур кнопок главного окна) и два модуля форм UserForm1 (для процедур формы заказа) и UserForm2 (для процедуры формы заполнения рекламы).
5.2 Листинг программы
Объявление переменных:
Dim bd1 AsDAO.Database
Dim r1 As Recordset
Dim r2 As Recordset
Dim r3 As Recordset
Dim i As Integer, j As Integer
Кнопка «Заказ»
Private Sub CommandButton1_Click()
Set bd1 = Open Data base("C:\kontr\kontr.mdb")
’Открытие ранее созданной базы в Access
Setr1 = bd1.Open Recordset("Продукция")
’Открытие таблицы из ранее открытой базы
Set r2 = bd1.OpenRecordset("Контракты")
Set r3 = bd1.OpenRecordset("Заказчики")
DoWhileNotr1.EOF
’Повторять пока не закончатся записи вr1
UserForm1.ComboBox1.AddItemr1!Наименование_продукта
’ Извлекаем значения в списоки зтаблицы «Продукция»
r1.MoveNext’Переход к следующей записи
Loop
Do While Not r3.EOF
UserForm1.ComboBox3.AddItem r3!Фирма
r3.MoveNext
Loop
UserForm1.Show ’ Вызываем диалоговое окно
EndSub
Кнопка «Продукция»
Private Sub CommandButton4_Click()
Set bd1 = OpenDatabase("C:\kontr\kontr.mdb")
Set r1 = bd1.OpenRecordset("Продукция")
DoWhileNotr1.EOF
' Запись в ячейки таблицы Excel значений из таблицы «Продукция»
Worksheets("Продукция").Cells(i + 10, 1).Value = r1!Наименование_продукта
Worksheets("Продукция").Cells(i + 10, 2).Value = r1!артикул_продукта
Worksheets("Продукция").Cells(i + 10, 3).Value = r1!Количество_шт
Worksheets("Продукция").Cells(i + 10, 4).Value = r1!Цена_за_шт
Worksheets("Продукция").Cells(i + 10, 5).Value = r1!Описание
i = i + 1
r1.MoveNext
Loop
Worksheets("Продукция").Activate
End Sub
Кнопка «Контракты»
PrivateSubCommandButton6_Click()
' Код аналогичен коду кнопки «Продукция»
Set bd1 = OpenDatabase("C:\kontr\kontr.mdb")
Set r1 = bd1.OpenRecordset("Контракты")
Do While Not r1.EOF
Worksheets("Контракты").Cells(j + 10, 1).Value = r1!Наименование_продукта
Worksheets("Контракты").Cells(j + 10, 2).Value = r1!Количество
Worksheets("Контракты").Cells(j + 10, 3).Value = r1!Дата
Worksheets("Контракты").Cells(j + 10, 4).Value = r1!Фирма
j = j + 1
r1.MoveNext
Loop
Worksheets("Контракты").Activate
End Sub
Кнопка «Реклама»
Private Sub CommandButton3_Click()
Set bd1 = OpenDatabase("C:\kontr\kontr.mdb")
Set r1 = bd1.OpenRecordset("Продукция")
DoWhileNotr1.EOF
’ Загружаем значения в список из таблицы открытой ранее
UserForm2.ComboBox1.AddItemr1!Наименование_продукта
r1.MoveNext
Loop
UserForm2.Show
End Sub
Кнопка «Контракты»
Private Sub CommandButton4_Click()
Set bd1 = OpenDatabase("C:\kontr\kontr.mdb")
Set r1 = bd1.OpenRecordset("Продукция")
Do While Not r1.EOF
Worksheets("Продукция").Cells(i + 10, 1).Value = r1!Наименование_продукта
Worksheets("Продукция").Cells(i + 10, 2).Value = r1!артикул_продукта
Worksheets("Продукция").Cells(i + 10, 3).Value = r1!Количество_шт
Worksheets("Продукция").Cells(i + 10, 4).Value = r1!Цена_за_шт
Worksheets("Продукция").Cells(i + 10, 5).Value = r1!Описание
i = i + 1
r1.MoveNext
Loop
Worksheets("Продукция").Activate
EndSub
UserForm1.Раскрывающийсясписок
Private Sub ComboBox1_Click()
Set bd1 = OpenDatabase("C:\kontr\kontr.mdb")
k1 = ComboBox1.Text
s1 = "Select * from[Продукция] where[Наименование_продукта]=""" &k1 & """"
Set r1 = bd1.OpenRecordset(s1)
TextBox1.Text = r1!Количество_шт
TextBox2.Text = r1!Цена_за_шт
TextBox3.Text = r1!артикул_продукта
End Sub
Кнопка «Принятьзаказ»
Private Sub CommandButton1_Click()
i = i + 1’ Счетчик для нумерации счет-фактур
Sheets("Счёт-фактура").Range("k5") = I
’Запись в ячейку номера счет-фактуры
tr = TextBox4.Text
’ Записываем значение из текстового поля в переменную
tr1 = TextBox1.Text
If tr > tr1 Then’Проверям наличие продукции
MsgBox ("Недостаточнопродукциинапредприятии!")
Else
Sheets("Счёт-фактура").Range("C8") = ComboBox3.Value
'Вписываем в ячейку C8 значение из списка (загружаем имя фирмы заказчика)
k2 = ComboBox3.Text
s2 = "Select * from[Заказчики] where[Фирма]=""" &k2 & """"
'SQL-запросвтаблицу «Заказчики»
Set r3 = bd1.OpenRecordset(s2)
Set r2 = bd1.OpenRecordset(s2)
Sheets("Счёт-фактура").Range("c9") = r2!Адрес
' Записываем значение из поля Адрес таблицы «Заказчики» в ячейку C9
Sheets("Счёт-фактура").Range("c10") = r3!Контактный_телефон
Sheets("Счёт-фактура").Range("a13") = ComboBox1.Value
Sheets("Счёт-фактура").Range("b13") = TextBox3.Text
Sheets("Счёт-фактура").Range("c13") = TextBox4.Text
Sheets("Счёт-фактура").Range("d13") = TextBox2.Text
Sheets("Счёт-фактура").Range("e13") = (TextBox4.Text * TextBox2.Text)
' Запись и вычисление стоимости необходимой продукции
Sheets("Счёт-фактура").Range("d18") = Date
With r1
.Edit
!Количество_шт = !Количество_шт - Val(TextBox4.Text)
’ Работа с Access. Уменьшение количества продукции
.Update
EndWith
Set bd1 = OpenDatabase("C:\kontr\kontr.mdb")
Set r4 = bd1.OpenRecordset("Контракты")
g = ComboBox1.Value
g1 = TextBox4.Text
g2 = ComboBox3.Value
Withr4
.AddNew
' Добавление новых записей в таблицу «контракты»
'.Bookmark = .LastModified
!Наименование_продукта = g
!Количество = g1
!Дата = Date
!Фирма = g2
'.MoveNext
.Update
End With
End If
End Sub
UserForm2.Кнопка «Заполнить рекламу»
Private Sub CommandButton1_Click()
Set bd1 = OpenDatabase("C:\kontr\kontr.mdb")
Set w1 = CreateObject("Word.Application")’ Инициализация объекта Word
w1.Documents.Open Filename:="C:\kontr\Реклама.doc"
’ Открытие документа “Реклама.doc”
k = UserForm2.ComboBox1.Text
' Запись в переменную значения из списка
s = "Select * from[Продукция] where[Наименование_продукта]=""" &k& """" 'SQL-запрос.' Выбираем значение из таблицы
«Продукция» из столбца «Наименование_продукта» равное k
Set r1 = bd1.OpenRecordset(s)
m = InputBox("Введитеценутовара")
w1.Application.Visible = True ' Отобразить окно Word
w1.WindowState = wdWindowStateMaximize’Развернутьего
w1.Documents("Реклама").TextBox1.Text = r1!Наименование_продукта
w1.Documents("Реклама").TextBox2.Text = m
w1.Documents("Реклама").TextBox3.Text = r1!Описание
End
EndSub
