Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 4:
Базы данных
Практическая работа 30. ADO
30а. ADO: вывод данных в поле списка; добавление/удаление записей в базу данных из проекта
- Создать на форме 5 полей списка ( lstName, lstVorname, lstVatersn, lstGebdat, lstNummer ),
- создать ссылку на библиотеку: Проект Информация (рис. 4.5) установить флажок Microsoft ActiveX Data Object 2.0 сделать щелчок на кнопке ОК,
- создать на форме меню (рис. 4.6): Инструменты Редактор меню, данные табл. 4.9 OK,
- ввести код, данный ниже, пояснения даны под комментариями,
(General) (Declarations) (формы) ' описание переменных как объектов подключения и ' набора записей Private cn As adodb.Connection Private rs As adodb.Recordset
Private Sub Form_Activate() ' переменная для хранения строки подключения к базе данных Dim cmd As String ' переменная для хранения SQL-запроса sql As String Dim cn As adodb.Connection Dim rs As adodb.Recordset ' очистить списки lstName.Clear lstVorname.Clear lstVatersn.Clear lstGebdat.Clear lstNummer.Clear ' создать строку подключения. Подключение проводится с помощью ' провайдера OLEDB (иначе в строке нужно указать другого провайдера). ' Следующий параметр (см. строку программы) определяет имя базы данных. ' Строка кода выделяется в отдельную функцию, что позволяет реализовать работу с ' различными источниками данных. Такой функции можно передать параметр. cmd = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security _ Info=False;Data Source=A:\db1.mdb" ' установить соединение с базой данных Set cn = New adodb.Connection cn.ConnectionString = cmd cn.Open ' создать запрос sql = "select * from Таble1" ' открыть набор записей. Открывается объект Recordset, ему нужно передать ' SQL-запрос (sql = "select * from Table1"), Set rs = New..... Далее ' набор открывается командой rs.Open sql, cn,adOpenDynamic, adLOckOPtimistic ' параметр sgl хранит SQL-запрос, второй параметр означает, что для 'подключения к базе нужно использовать объект cn, следующий параметр ' определяет тип курсора (табл. 4.10)
Таблица 4.10. Типы курсоров Тип курсора Описание ad OpenForwardOnly Лишь для перебора записей в одном направлении adOpenKeyset Для большого набора записей adOpenDynamic Позволяет отслеживать изменения, вносимые другими пользователями в набор записей adOpenStatic Для небольших наборов Последний параметр определяет тип доступа к набору записей (табл. 4.11)
Таблица 4.11. Тип блокировки Тип блокировки Описание ad LockReadOnly Использовать, если не нужно добавлять, обновлять или удалять записи adLockPessimistic Запись блокируется в начале редактирования до его завершения или перехода к следующей записи adLockOptimistic Включается при вызове метода Update для записи. Запись временно блокируется (на время сохранения изменений в базе) Set rs = New adodb.Recordset rs.Open sql, cn, adOpenDynamic, adLockOptimistic Do While Not rs.EOF ' включить данные в каждый список lstName.AddItem rs("Name") lstVorname.AddItem rs("Vorname") lstVatersn.AddItem rs("Vatersn") lstGebdat.AddItem rs("Gebdat") lstNummer.AddItem rs ("Nummer") rs.MoveNext ' перейти к следующей записи Loop ' закрыть набор записей и очистить объектную переменную rs.Close Set rs = Nothing ' закрыть подключение и уничтожить объект подключения cn.Close: Set cn = Nothing End Sub Private Sub mnuDob_Click() ' показать форму "Добавление" frmDob.Show End Sub Private Sub mnuExit_Click() Dim v As Integer ' код возврата ' проверка, хочет ли пользователь закончить ' выполнение проекта v = MsgBox("Exit ?", vbYesNo + vbQuestion, " Exit ?") ' число 6 соответствует нажатой кнопке Yes If v = 6 Then End End Sub Private Sub mnuUd_Click() ' показать форму "Удаление" frmUd.Show End Sub
- добавить новую форму для добавления записей в базу данных, на форме создать 6 элементов управления Label (значения свойств Caption даны на рис. 4.7), 5 текстовых полей (txtName, txtVorname, txtVatersn, txtGebdat, txtNummer) и 2 элемента управления CommandButton, рис. 4.7.
- ввести код, данный ниже:
(General) (Declarations) Private cn As adodb.Connection Private rs As adodb.Recordset Private Sub Command1_Сlick() Dim rc As String 'код возврата Dim cmd As String, sql As String Dim cn As adodb.Connection, rs As adodb.Recordset ' создать строку подключения cmd = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security _ Info=False;Data Source=A:\db1.mdb" ' установить соединение с базой данных Set cn = New adodb.Connection cn.ConnectionString = cmd cn.Open sql = "select * from Таble1" ' создать запрос Set rs = New adodb.Recordset ' открыть набор записей rs.Open sql, cn, adOpenDynamic, adLockOptimistic ' проверка, действительно ли пользователь ' хочет добавить данные rc = MsgBox("Add ?", vbYesNo + vbQuestion, "Add !") If rc = 6 Then ' процесс добавления данных rs.AddNew: rs("Name") = txtName rs("Vorname") = txtVorname rs("Vatersn") = txtVatersn rs("Gebdat") = txtGebdat rs("Nummer") = txtNummer rs.Update End If rs.Close: Set rs = Nothing cn.Close Set cn = Nothing ' вывод сообщения о добавлении записи в БД MsgBox "Введенная вами запись добавлена в базу данных!",_ vbOKOnly, "Успешное добавление!" End Sub Private Sub Command2_Click() ' перейти на главную форму Unload Me: Form1.Show End Sub
- добавить новую форму для работ по удалению записей из базы данных, создать на форме элементы управления Label, TextВox (Name= txtQuery), 2 элемента управления CommandButton, рис. 4.8,
- ввести код:
Private cn As adodb.Connection Private rs As adodb.Recordset Private Sub Command1_Сlick() Dim rc As Integer 'код возврата Dim cmd As String, sql As String, cn As adodb.Connection Dim rs As adodb.Recordset ' создание SQL-запроса sql = "SELECT Таble1.Nummer From Таble1 WHERE_ (((Таble1.Nummer) = "_ sql = sql & """" & txtQuery.Text & """" &"));" ' создать строку подключения cmd = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security _ Info=False;Data Source=A:\db1.mdb" ' установить соединение с базой данных Set cn = New adodb.Connection cn.ConnectionString = cmd cn.Open ' открыть набор записей Set rs = New adodb.Recordset rs.Open sql, cn, adOpenDynamic, adLockOptimistic ' проверка, действительно ли пользователь хочет ' удалить данные rc = MsgBox("Yes or No ?", vbYesNo + vbQuestion, "Del) If rc = 6 Then rs.Delete ' процесс удаления MsgBox "Запись из базы данных удалена!", _ vbInformation + vbOKOnly, "Удаление выполнено!" End If rs.Close: Set rs = Nothing cn.Close Set cn = Nothing End Sub Private Sub Command2_Click() Unload Me: Form1.Show End Sub
- cтартовать проект, при этом выводятся данные в поля ListBox, ввести записи в базу данных из проекта, удалить записи.