Спонсор: Microsoft
Опубликован: 04.07.2006 | Доступ: свободный | Студентов: 5441 / 620 | Оценка: 4.11 / 3.96 | Длительность: 11:08:00
Лекция 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, ввести записи в базу данных из проекта, удалить записи.
антонина квасова
антонина квасова
Владимир Муратов
Владимир Муратов

По курсу Visual Basic где же взять материалы для практических работ? 

Светлана Ведяева
Светлана Ведяева
Россия, Саратов
Оксана Пагина
Оксана Пагина
Россия, Москва