Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_6.doc
Скачиваний:
97
Добавлен:
01.12.2018
Размер:
3.77 Mб
Скачать

10.4.5. Выполнение запросов к бд.

Объекты Connection и Command имеют метод Exsecute, позво-

ляющий выполнять запросы к БД. Для выполнения запроса можно объявить строковую переменную, например, sq и присвоить ей текст SQL-запроса:

sq = ” Select … From … Where … “

Для его выполнения достаточно записать оператор:

Set rs = cn.Execute(sq)

В результате будет создан набор RecordSet, содержащий результат выполнения запроса. Можно также вводить текст SQL-оператора запроса:

Set rs = cn.Execute(InputBox(“Введите текст SQL-оператора запроса”))

Метод Exsecute объекта Command позволяет выполнять параметризованные запросы к БД.

10.5. Пример обработки бд в рамках технологии ado.

Пусть мы создали БД “Institut” с двумя таблицами следующей структуры:

Таб. “Студенты”:

Номер курса, номер группы, номер в группе, ФИО, пол, год рождения.

Таб. “Сессия”:

Номер курса, номер группы, номер в группе, оценки по 6 экзаменам.

Обработав БД, выдать на экран справку о студентах, чей средний балл ниже общего среднего значения.

Открываем новый проект, размещаем на форме элемент

MSFlexGrid, текстовое окно и две командные кнопки. Файл базы данных копируем в папку проекта для обеспечения независимости приложения от используемого компьютера. Для первой командной кнопки записываем процедуру:

Private Sub Command1_Click()

Dim sr!(), i%, j%, k%, kolzap%, 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

Подключаем объекты ADO к БД и в первом объекте RecordSet устанавливаем указатель на первую запись в таблице "Сессия":

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 Command2_Click()

End

End Sub

Добавляем к проекту пользовательский модуль, в который записываем код приведенной ранее процедуры Connect. Запускаем приложение на выполнение.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]