- •Институт информационных систем управления
- •Кандидат экономических наук, доцент в.А. Машурцев
- •Введение.
- •Глава 1. Vb 6.0 – среда разработки приложений.
- •1.1. Окна среды vb.
- •1.2. Файловая структура проекта.
- •1.3. Визуальное конструирование приложения.
- •1.4. Основные свойства формы и задание их значений.
- •1.5. Добавление форм к проекту и удаление форм из проекта.
- •1.6. Основные элементы управления и их свойства.
- •1.6.1. Элемент Label.
- •1.6.2. Элемент TextBox. Элемент TextBox (текстовое окно) предназначен для ввода исходной
- •1.6.3. Элементы HscrollBar и VscrollBar.
- •1.6.4. Элемент CommandButton.
- •1.7. События и методы.
- •1.8. Включение изображений в интерфейс пользователя.
- •1.8.1. Элемент Image. Элемент управления Image предназначен в основном для нанесе-
- •1.8.2. Элемент PictureBox.
- •1.9. Сохранение проекта.
- •Глава 2. Данные vb.
- •2.1. Типы данных.
- •2.1.1. Типы числовых данных.
- •2.1.1.1. Целочисленные данные.
- •2.1.1.2. Вещественные данные.
- •2.1.2. Типы нечисловых данных.
- •2.2. Объявление переменных и констант.
- •2.3. Область видимости переменных и констант.
- •2.4. Совместимость и преобразование типов данных.
- •2.5. Ввод исходных данных и вывод результатов обработки.
- •2.5.1. Окно сообщений. Оператор и функция MsgBox.
- •2.6. Форматирование вывода чисел.
- •Глава 3. Алгоритмизация вычислительных процессов.
- •3.1. Алгоритм и его свойства.
- •3.2. Типы вычислительных процессов.
- •3.3. Операторы vb.
- •3.4. Логические выражения.
- •3.5. Управляющие конструкции.
- •3.5.1. Операторы ветвлений.
- •3.5.1.1. Условный оператор.
- •3.5.1.2. Оператор выбора.
- •3.5.2. Операторы циклов.
- •3.5.2.1. Регулярный цикл.
- •3.5.2.2. Итерационные циклы.
- •3.5.2.3. Цикл перечислимого типа.
- •3.5.3. Элементы выбора.
- •3.5.3.1. Элемент CheckBox.
- •3.5.3.2. Элемент OptionButton.
- •3.5.4. Элемент управления и функция Timer.
- •3.5.5. Дата и время.
- •3.5.6. Оператор DoEvents.
- •3.5.7. Объединение кнопок в группы.
- •3.5.7.1. Элемент Frame.
- •3.6. Списки.
- •3.6.1. Элемент ListBox.
- •3.6.2. Элемент ComboBox.
- •Глава 4. Массивы.
- •4.1. Одномерные массивы.
- •4.2. Двумерные массивы.
- •4.3. Статические и динамические массивы.
- •4.4. Функция Array.
- •4.5. Генератор случайных чисел.
- •4.6. Функции lBound и uBound.
- •4.7. Массивы элементов управления.
- •4.8. Сопоставление массивов и списков.
- •4.9. Элемент msFlexGrid.
- •4.10. Упорядочение строк элемента msFlexGrid.
- •Глава 5. Процедуры и функции полоьзователя.
- •5.1. Создание стандартного модуля в приложении.
- •5.2.2. Вызов процедуры на выполнение.
- •5.3. Функции пользователя.
- •Глава 6. Обработка текстовой информации.
- •6.1. Изменение регистра символов в тексте.
- •6.2. Поиск заданной подстроки в тексте.
- •6.3. Выборка части текста.
- •6.4. Замена символов в тексте.
- •6.5. Удаление лишних пробелов из строки текста.
- •6.6. Инвертирование строк.
- •6.7. Преобразование текстовых строк в числа и наоборот.
- •6.8. Определение длины текста.
- •Глава 7. Создание меню пользователя.
- •Глава 8. Пользовательский тип данных.
- •8.1. Записи.
- •8.2. Сложные структуры данных.
- •Глава 9. Файлы.
- •9.1. Файлы последовательного доступа.
- •9.1.1. Открытие файла последовательного доступа.
- •9.1.2. Запись информации в файл.
- •9.1.3. Чтение информации из файла.
- •9.1.4. Закрытие файла.
- •9.2. Файлы произвольного доступа.
- •9.2.1. Открытие файла произвольного доступа.
- •9.2.2. Запись информации в файл.
- •9.4. Операции с файлами в vb.
- •9.5. Файловые операторы и функции обработки данных.
- •9.6. Сравнительный пример работы с файлами.
- •Глава 10. Обработка бд Access в среде vb.
- •10.1. Создание бд Access в среде vb.
- •10.2. Использование технологии Data Access Objects (dao).
- •10.2.1. Элемент управления Data.
- •10.2.2. Свойство Recordset элемента Data.
- •10.2.3. Программное связывание элементов.
- •10.3. Технология ActiveX Data Objects (ado).
- •10.3.1. Подключение ado Data к источнику данных (бд).
- •10.3.2. Подключение ado Data к источнику записей.
- •10.3.3. Элемент управления DataGrid.
- •10.4. Объекты ado.
- •10.4.1. Объект Connection.
- •10.4.2. Объект RecordSet.
- •10.4.3. Перемещение по набору записей.
- •10.4.4. Обращение к отдельным полям записи.
- •10.4.5. Выполнение запросов к бд.
- •10.5. Пример обработки бд в рамках технологии ado.
- •Глава 11. Обмен данными между приложениями.
- •11.1. Экспорт данных из бд в текстовый файл.
- •11.2. Технология внедрения и связывания (ole).
- •11.3. Связывание и внедрение на этапе design.
- •11.3.1. Связывание на этапе проектирования. Сразу же после размещения на форме элемента ole появляется
- •11.3.2. Внедрение на этапе проектирования.
- •11.4. Связывание и внедрение объектов на этапе run.
- •11.4.1. Свойства ole-контейнера.
- •11.4.2. Методы ole-контейнера.
- •11.4.3. События, связанные с ole-контейнером.
- •11.4.5. Внедрение объекта на этапе run. Для внедрения объектов в vb-приложение используется метод CreateEmbed. Синтаксис оператора, использующего этот метод:
- •Глава 12. Графические средства vb 6.
- •12.1. Управление цветом.
- •12.2. Изображения в интерфейсе проекта.
- •12.2.1. Наложение изображения на этапе проектирования. Наложение изображения на форму.
- •Восстановление утраченных графических файлов.
- •Наложение изображения на элемент PictureBox.
- •Наложение изображения на элемент CommandButton.
- •12.2.2. Наложение изображений на этапе выполнения.
- •12.3. Использование анимированных изображений.
- •12.3.1. Визуализация анимированных gif-файлов.
- •12.3.2. Визуализация на форме клипов.
- •12.4. Рисунки на графических объектах.
- •12.4.1. Элемент Shape.
- •12.4.2. Элемент Line.
- •12.5. Графические методы.
- •12.5.1. Методы для работы с изображением точки.
- •12.5.2. Метод Line.
- •12.5.3. Метод Circle.
- •12.6. Использование графики для решения отдельных задач.
- •12.6.1. Визуализация процесса сортировки элементов массива.
- •12.6.2. Принадлежность точки заданной области.
- •Приложение 1. Типовые алгоритмы обработки чисел.
- •Приложение 3. Алгоритмы обработки массивов.
- •Приложение 4. Примеры создания процедур и функций.
- •Приложение 5. Пример обработки типизированных файлов.
- •Приложение 6. Пример обработки бд Access в среде vb.
- •Оглавление
- •Глава 1. Vb 6.0 – среда разработки приложений. 4
- •Глава 2. Данные vb. 20
- •Глава 3. Алгоритмизация вычислительных процессов. 33
- •Глава 4. Массивы. 61
- •Глава 5. Процедуры и функции полоьзователя. 77
- •Глава 10. Обработка бд Access в среде vb. 110
- •Глава 11. Обмен данными между приложениями. 139
- •Глава 12. Графические средства vb 6. 150
Приложение 6. Пример обработки бд Access в среде vb.
Создать БД с таблицами:
-
Номер курса, номер группы, номер в группе, ФИО, пол, год рождения.
-
Номер курса, номер группы, номер в группе, оценки по 6 экзаменам.
С помощью меню пользователя обеспечить возможность обработки БД:
- корректировки записей в таблицах;
- добавления новых записей в таблицы;
- удаления заданных записей из таблиц.
Обработав БД, получить таблицу:
-
Справка о студентах, чей средний балл ниже общего среднего значения.
-
На основании 1-ой таблицы сформировать запрос к БД, позволяющий вывести данные о студентах, чьи фамилии начинаются с введенной с клавиатуры заглавной русской буквы
.
В среде VB с помощью надстройки Visual Data Manager или в среде Access создаем базу данных “Institut” содержащую заданные условием
задачи таблицы и запросы.
Открываем проект и на форме располагаем элемент MSFlexGrid и текстовое окно для вывода результата решения задачи. На форме создаем пользовательское меню со следующей структурой:
В результате форма должна приобрести следующий вид:
Добавляем к проекту стандартный модуль и записываем в него процедуру подключения к созданной БД:
Public Sub Connect(db$, tb$, cn As Object, rs As Object)
cn.ConnectionString = "Driver=Microsoft Access Driver (*.mdb)"
cn.Open ("Provider=Microsoft.Jet.OLEDB.3.51; Data Source=" & _
CurDir & "\" & db & ".mdb")
rs.ActiveConnection = cn
rs.CursorType = adOpenDynamic
rs.LockType = adLockPessimistic
rs.Open tb
End Sub
Для пунктов меню в окне кода объявляем общедоступные переменные и записываем необходимые процедуры:
Public cn As New ADODB.Connection, rs As New ADODB.Recordset
Public st$, kolzap%
Процедура вывода на экран таблицы “Сессия” БД.
Private Sub mnuSessia_Click()
Dim i%, cn1 As New ADODB.Connection
Dim j%, rs1 As New ADODB.Recordset
Label1.Visible = False
Text1.Visible = False
Подключаем объекты ADO к БД:
Call Connect("Institut", "Сессия", cn1, rs1)
Определяем количество записей в таблице "Сессия":
kolzap = 0
Do While Not rs1.EOF
rs1.MoveNext
kolzap = kolzap + 1
Loop
Задаем параметры элемента MSFlexGrid:
MSFG1.Cols = rs1.Fields.Count: MSFG1.Rows = kolzap + 1
For i = 0 To rs1.Fields.Count - 1
MSFG1.ColWidth(i) = MSFG1.Width / (rs1.Fields.Count + 2)
Next i
Задаем заголовки столбцов элемента MSFlexGrid:
MSFG1.FormatString= "^№ |^№ курса |^№ группы |^№ в группе |^ О1” _
“|^О2 |^ О3 |^ О4 |^ О5 |^ О6"
Заносим в MSFlexGrid данные из таблицы "Сессия"
:
rs1.MoveFirst
For i = 1 To kolzap
For j = 0 To 9
MSFG1.TextMatrix(i, j) = rs1.Fields(j)
Next j
rs1.MoveNext
Next i
Закрываем подключение ADO к БД и освобождаем
занимаемую объектами ADO память:
rs1.Close
Set rs1 = Nothing
cn1.Close
Set cn1 = Nothing
End Sub
Процедура вывода на экран таблицы “Студенты” БД.
Private Sub mnuStudents_Click()
Dim i%, cn2 As New ADODB.Connection
Dim j%, rs2 As New ADODB.Recordset
Label1.Visible = False
Text1.Visible = False
Подключаем объекты ADO к БД:
Call Connect("Institut", "Студенты", cn2, rs2)
Определяем количество записей в таблице "Студенты":
kolzap = 0
Do While Not rs2.EOF
rs2.MoveNext
kolzap = kolzap + 1
Loop
Задаем параметры элемента MSFlexGrid:
MSFG1.Cols = rs2.Fields.Count: MSFG1.Rows = kolzap + 1
For i = 0 To rs2.Fields.Count - 1
MSFG1.ColWidth(i) = MSFG1.Width / (rs2.Fields.Count + 2)
Next i
Задаем заголовки столбцов элемента MSFlexGrid:
MSFG1.FormatString= "^№ |^№ курса |^№ группы |^№ в группе |<ФИО” _
] “|^Пол |^Год рождения"
Заносим в MSFlexGrid данные из таблицы "Студенты":
rs2.MoveFirst
For i = 1 To kolzap
For j = 0 To 6
MSFG1.TextMatrix(i, j) = rs2.Fields(j)
Next j
rs2.MoveNext
Next i
Закрываем подключение ADO к БД и освобождаем
занимаемую объектами ADO память:
rs2.Close
Set rs2 = Nothing
cn2.Close
Set cn2 = Nothing
End Sub
Процедура решения поставленной в условии задачи.
Private Sub mnuViewResult_Click()
Dim sr!(), i%, j%, k%, osr!
Создаем объекты Connection и RecordSet для таблицы "Сессия":
Dim cn1 As New ADODB.Connection, rs1 As New ADODB.Recordset
Создаем объекты Connection и RecordSet для таблицы "Студенты":
Dim cn2 As New ADODB.Connection, rs2 As New ADODB.Recordset
Label1.Visible = True
Text1.Visible = True
Подключаем объекты ADO к БД:
Call Connect("Institut", "Сессия", cn1, rs1)
Подсчитываем кол-во записей в таблице:
kolzap = 0
Do While Not rs1.EOF
rs1.MoveNext
kolzap = kolzap + 1
Loop
ReDim sr(1 To kolzap)
Для каждого студента определяем его средний балл и полученные
значения заносим в массив sr:
osr = 0: rs1.MoveFirst
For i = 1 To kolzap
sr(i) = 0
For j = 4 To 9
sr(i) = sr(i) + rs1.Fields(j) / 6
Next j
osr = osr + sr(i)
rs1.MoveNext
Next i
Определяем общий средний балл и выводим его значение в
текстовое окно:
osr = osr / kolzap
Text1.Visible = True
Label1.Visible = True
Text1.Text = " " & Format(osr, "Fixed")
Задаем параметры элемента управления MSFlexGrid:
MSFG1.Clear
MSFG1.Cols = 6: MSFG1.Rows = kolzap + 1
For i = 0 To 5
MSFG1.ColWidth(i) = MSFG1.Width / 5
Next i
For i = 0 To kolzap
MSFG1.RowHeight(i) = MSFG1.Height / 7
Next i
MSFG1.FormatString= "^№ |^№ курса |^№ группы |^№ в группе |<ФИО" _
"|^ Ср. балл "
Из таблицы "Сессия" заносим в MSFlexGrid значения № курса, №
группы, № в группе и средний балл тех студентов, у которых средний
балл ниже общего среднего балла:
k = 0
rs1.MoveFirst
For i = 1 To kolzap
If sr(i) < osr Then
k = k + 1
For j = 1 To 3
MSFG1.TextMatrix(k, j) = rs1.Fields(j)
Next j
MSFG1.TextMatrix(k, 0) = k
MSFG1.TextMatrix(k, 5) = Format(sr(i), "Fixed")
End If
rs1.MoveNext
Next i
Подключаем объекты ADO к таблице "Студенты" базы данных:
Call Connect("Institut", "Студенты", cn2, rs2)
Из таблицы "Студенты" заносим в MSFlexGrid фамилии тех
студентов, у которых средний балл ниже общего среднего балла:
k = 0
rs2.MoveFirst
For i = 1 To kolzap
If sr(i) < osr Then
k = k + 1
MSFG1.TextMatrix(k, 4) = rs2.Fields(4)
End If
rs2.MoveNext
Next i
Окончательно закрываем подключение объектов ADO к БД:
rs1.Close
Set rs1 = Nothing
cn1.Close
Set cn1 = Nothing
rs2.Close
Set rs2 = Nothing
cn2.Close
Set cn2 = Nothing
End Sub
Процедура корректировки данных в БД.
Private Sub mnuEditRec_Click()
Dim i%, n%, sz$, nf As Variant
rs.LockType = adLockOptimistic
Label1.Visible = False
Text1.Visible = False
st = InputBox("Введите имя таблицы")
Подключаем объекты ADO к БД:
Call Connect("Institut", st, cn, rs)
Выводим на экран таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
Вводим данные для корректировки:
n = InputBox("Введите номер корректируемой записи")
sz = InputBox("Введите имя корректируемого поля записи")
nf = InputBox("Введите новое значение корректируемого поля")
Находим запись с нужным номером и корректируем ее заданное
поле:
Do While Not rs.EOF
If rs.Fields(0) = n Then rs.Fields(sz) = nf: Exit Do
rs.MoveNext
Loop
rs.Update
Прерываем связь объектов Connection и RecordSet с БД
и освобождаем занимаемую ими память:
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Выводим на экран отредактированную таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
End Sub
Процедура добавления новых данных в БД.
Private Sub mnuSetNewRec_Click()
Dim i%, pz As Variant
rs.LockType = adLockOptimistic
Label1.Visible = False
Text1.Visible = False
st = InputBox("Введите имя таблицы, в которую хотите добавить” _
“ новую запись")
Call Connect("Institut", st, cn, rs)
Выводим на экран таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
Добавляем новую запись в таблицу:
rs.AddNew
For i = 0 To rs.Fields.Count - 1
pz = InputBox("Введите значение " & i & "-го поля новой записи” _
“ таблицы " & st & ". При вводе нужно соблюдать уникальность” _
“ комбинации: № курса, № группы, № в группе")
rs.Fields(i) = pz
Next i
rs.Update
Прерываем связь объектов Connection и RecordSet с БД
и освобождаем занимаемую ими память:
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Выводим на экран измененную таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
Do
Loop Until MsgBox(" Таблица " & st, 64) = vbOK
Переходим к другой таблице:
If st = "Сессия" Then st = "Студенты" Else st = "Сессия"
rs.LockType = adLockOptimistic
Call Connect("Institut", st, cn, rs)
Выводим на экран другую таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
Добавляем новую запись в другую таблицу:
rs.AddNew
For i = 0 To rs.Fields.Count - 1
pz = InputBox("Введите значение " & i & "-го поля новой записи” _
“ таблицы " & st & " При вводе нужно соблюдать уникальность” _
“ комбинации: № курса, № группы, № в группе")
rs.Fields(i) = pz
Next i
rs.Update
Прерываем связь объектов Connection и RecordSet с БД
и освобождаем занимаемую ими память:
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Выводим на экран измененную другую таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
End Sub
Процедура удаления записи с заданным номером из БД
Private Sub mnuDelRec_Click()
Dim n%, k%
rs.LockType = adLockOptimistic
Label1.Visible = False
Text1.Visible = False
st = InputBox("Введите имя таблицы, из которой хотите удалить запись")
Создаем объекты Connection и RecordSet для таблицы:
Call Connect("Institut", st, cn, rs)
Выводим на экран таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
Вводим номер удаляемой записи:
n = InputBox("Введите номер удаляемой записи")
Определяем позицию удаляемой записи в наборе RecordSet
:
k = 0
Do While Not rs.EOF
k = k + 1
If n = rs.Fields(0) Then Exit Do
rs.MoveNext
Loop
rs.MoveFirst
Удаляем из таблицы запись с заданным номером:
rs.Move k - 1
rs.Delete
rs.Update
Прерываем связь объектов Connection и RecordSet с БД
и освобождаем занимаемую ими память:
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Выводим на экран измененную таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
Do
Loop Until MsgBox(" Таблица " & st, 64) = vbOK
Переходим к другой таблице:
If st = "Сессия" Then st = "Студенты" Else st = "Сессия"
Call Connect("Institut", st, cn, rs)
Выводим на экран другую таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
Определяем позицию удаляемой записи:
k = 0
Do While Not rs.EOF
k = k + 1
If n = rs.Fields(0) Then Exit Do
rs.MoveNext
Loop
rs.MoveFirst
Удаляем из таблицы запись с заданным номером:
rs.Move k - 1
rs.Delete
rs.Update
Прерываем связь объектов Connection и RecordSet с БД
и освобождаем занимаемую ими память:
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
Выводим на экран измененную другую таблицу:
If st = "Сессия" Then mnuSessia_Click Else mnuStudents_Click
End Sub
Процедура выполнения запроса к БД:
Private Sub mnuZapros_Click()
Dim i%, j%, sq As String, fam$
Label1.Visible = False: Text1.Visible = False
Формируем строку SQL-оператора запроса
sq = "Select * From Студенты Where [ФИО] Like"
fam = InputBox("Введите первую букву фамилии", "Ввод заглавной
русской буквы")
sq = sq & "'" & fam & "%'"
Устанавливаем связь с БД
Call Connect("Institut", "Студенты", cn, rs)
Выполняем запрос
Set rs = cn.Execute(sq)
Выводим результат запроса в элемент MSFlexGrid
kolzap = 0
Do While Not rs.EOF
rs.MoveNext
kolzap = kolzap + 1
Loop
flg.FormatString = "^ № |^ № курса |^ № группы |^ № в группе |< ФИО " & _
"|^ Пол |^ Год рождения "
flg.Cols = rs.Fields.Count: flg.Rows = kolzap + 1
rs.MoveFirst
For i = 1 To kolzap
For j = 0 To 6
flg.TextMatrix(i, j) = rs.Fields(j)
Next j
rs.MoveNext
Next i
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Л и т е р а т у р а
-
Сайлер Б., Споттс Д. Использование Visual Basic 6. Специальное издание. Пер. с англ. Издательский дом «Вильямс» М; СПб; К, 2005. 832с.
-
Глушаков С.В., Сурядный А.С. Программирование на Visual Basic 6.0. Учебный курс; Харьков; ФОЛИО, 2002; 497с.
-
Кузьменко В.Г. Visual Basic 6. Москва, БИНОМ, 2005, 400с.
-
Браун С. Visual Basic 6. Учебный курс, Москва, С. П-б, ПИТЕР, 2006, 576с.
-
А. Ананьев, А. Федоров. Самоучитель Visual Basic 6.0, С. П-б, 2002, 622с.
-
Несмеянов И.А., Барковский В.В., Венчковский Л.Б., Лукина Т.А. Visual Basic 6.0 – интегрированная среда проектирования программных приложений. Учебное пособие. ГУУ; М., 2008, 246с.
7. Кудрявцев Б.М., Машурцев В.А. Алгоритмизация и программиро-
вание задач в среде Visual Basic 6.0 для Windows. ГУУ, М., 2005.
8. Древаль И.Д., Катрич Т.П., Машурцев В.А. Проектирование
приложений в интегрированной среде Visual Basic. Учебное посо-
бие. М., ГУУ, 2007, 197с.