Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Лекция 4:

Базы данных

Практическая работа 30. ADO

30а. ADO: вывод данных в поле списка; добавление/удаление записей в базу данных из проекта

  1. Создать на форме 5 полей списка ( lstName, lstVorname, lstVatersn, lstGebdat, lstNummer ),
  2. создать ссылку на библиотеку: Проект \to Информация (рис. 4.5) \to установить флажок Microsoft ActiveX Data Object 2.0 \to сделать щелчок на кнопке ОК,
    MSFlexGrid

    Рис. 4.5. MSFlexGrid
  3. создать на форме меню (рис. 4.6): Инструменты \to Редактор меню, данные табл. 4.9 \to OK,
    Таблица 4.9. Данные, используемые при создании меню
    Имя Название
    mnuDob &Добавить
    mnuUd &Удалить
    mnuExit &Выход
  4. ввести код, данный ниже, пояснения даны под комментариями,
    (General) (Declarations) (формы)
    ' описание переменных как объектов подключения и 
    ' набора записей
    Private cn As adodb.Connection
    Private rs As adodb.Recordset
    Вид формы Form1

    Рис. 4.6. Вид формы Form1
    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
  5. добавить новую форму для добавления записей в базу данных, на форме создать 6 элементов управления Label (значения свойств Caption даны на рис. 4.7), 5 текстовых полей (txtName, txtVorname, txtVatersn, txtGebdat, txtNummer) и 2 элемента управления CommandButton, рис. 4.7.
    Вид формы Добавление записи

    Рис. 4.7. Вид формы Добавление записи
  6. ввести код, данный ниже:
    (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
  7. добавить новую форму для работ по удалению записей из базы данных, создать на форме элементы управления Label, TextВox (Name= txtQuery), 2 элемента управления CommandButton, рис. 4.8,
    Вид формы Form3. Удаление записи

    Рис. 4.8. Вид формы Form3. Удаление записи
  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
  9. cтартовать проект, при этом выводятся данные в поля ListBox, ввести записи в базу данных из проекта, удалить записи.
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова