Программирование ADO. Option Compare Database

Страницы работы

Содержание работы

Option Compare Database

Методы Connection и Command возвращают статический набор записей и используются только для просмотра записей

Если предполагается использовать несколько объектов RecordSet, то связь с базой данных надо задавать явно:

'Ïðèìåð 1 íàáîð çàïèñåé ÷åðåç îáúåêò Connection

Sub GetRecordADO1()

Dim cnn As ADODB.Connection 'îáúåêò äëÿ ñîåäèíåíèÿ ñ ÁÄ

Dim rec As ADODB.Recordset 'îáúåêò äëÿ íàáîðà çàïèñåé

Dim stSQL As String 'ñòðîêà äëÿ óñëîâèÿ âûáîðêè

'óñòàíîâèòü ñîåäèíåíèå

Set cnn = CurrentProject.Connection

stSQL = "SELECT * FROM pasport"

'ïîëó÷àåì íàáîð çàïèñåé

Set rec = cnn.Execute(stSQL)

a = rec![Ôàìèëèÿ]

rec.Close

cnn.Close

End Sub

Метод Command в аргументе .CommandText может содержать URL

'Ïðèìåð 2 íàáîð çàïèñåé ÷åðåç îáúåêò Command

Sub GetRecordADO2()

Dim cmd As ADODB.Command  'îáúåêò äëÿ ñîåäèíåíèÿ ñ ÁÄ

Dim rec As ADODB.Recordset 'îáúåêò äëÿ íàáîðà çàïèñåé

Dim stSQL As String 'ñòðîêà äëÿ óñëîâèÿ âûáîðêè

'ñîçäàåì îáúåêò

Set cmd = New ADODB.Command

stSQL = "SELECT * FROM pasport"

'íàñòðàèâàåì ñâîéñòâà îáúåêòà

With cmd

    .ActiveConnection = CurrentProject.Connection

    .CommandText = stSQL

    .CommandType = adCmdText

End With

Set rec = cmd.Execute

rec.MoveNext

a = rec![Ôàìèëèÿ]

rec.Close

End Sub

'Ïðèìåð 2A íàáîð çàïèñåé ÷åðåç îáúåêò Command

Sub GetRecordADO_2A()

Dim cmd As ADODB.Command  'îáúåêò äëÿ ñîåäèíåíèÿ ñ ÁÄ

Dim rec As ADODB.Recordset 'îáúåêò äëÿ íàáîðà çàïèñåé

Dim stSQL As String 'ñòðîêà äëÿ óñëîâèÿ âûáîðêè

'ñîçäàåì îáúåêò

Set cmd = New ADODB.Command

stSQL = "SELECT * FROM pasport"

'íàñòðàèâàåì ñâîéñòâà îáúåêòà

With cmd

    .ActiveConnection = CurrentProject.Connection

    .CommandText = stSQL

    .CommandType = adCmdText

End With

'ñîçäàíèå è îòêðûòèå íàáîðà çàïèñåé

Set rec = New ADODB.Recordset

rec.Open cmd

rec.MoveNext

a = rec![Ôàìèëèÿ]

rec.Close

End Sub

Метод Open дает набор записей пригодный для всех работ

'Ïðèìåð 3 Çàïèñè èç òàáëèöû òåêóùåé áàçû ìåòîäîì Open

Sub GetRecordADO_3()

Dim cnn As ADODB.Connection 'îáúåêò äëÿ ñîåäèíåíèÿ ñ ÁÄ

Dim rec As ADODB.Recordset 'îáúåêò äëÿ íàáîðà çàïèñåé

'óñòàíîâèòü ñîåäèíåíèå

Set cnn = CurrentProject.Connection

Set rec = New ADODB.Recordset

With rec

    .ActiveConnection = cnn

    .CursorType = adOpenKeyset

    .Open Source:="pasport"

End With

a = rec![Ôàìèëèÿ]

rec.Close

End Sub

Статический курсор с последовательным доступом – не позволяет добавлять или изменять записи, движется только вниз

Статический курсор - не позволяет добавлять или изменять записи, движется в двух направлениях, не позволяет видеть записи добавленные другим пользователем

Курсор с доступом по ключу – поддержка всех действий, движется в двух направлениях, не позволяет видеть записи добавленные другим пользователем

Динамический курсор – все позволяет

'Ïðèìåð 4  Çàïèñè èç âíåøíåé áàçû ìåòîäîì Open

Sub GetRecordADO_4()

Dim rec As ADODB.Recordset 'îáúåêò äëÿ íàáîðà çàïèñåé

Dim stSQL As String 'ñòðîêà äëÿ óñëîâèÿ âûáîðêè

Dim stConn As String 'ñòðîêà äëÿ ïóòè ïîäêëþ÷åíèÿ

stConn = "Provider=Microsoft.Jet.OLEDB.4.0;" _

        & "Data Source = C:\Áèáëòîòåêà.mdb;"

stSQL = "SELECT * FROM pasport"

Set rec = New ADODB.Recordset

With rec

    .LockType = adLockReadOnly

    .Open Source:=stSQL, ActiveConnection:=stConn, Options:=adCmdText

End With

a = rec![Àâòîð êíèãè]

rec.Close

End Sub

'Ïðèìåð 5 Îðãàíèçàöèè ïîèñêà â ADO

Sub FindVacancy()

Dim idList() As Integer

Dim cnn As ADODB.Connection 'îáúåêò äëÿ ñîåäèíåíèÿ ñ ÁÄ

Dim rec As ADODB.Recordset 'îáúåêò äëÿ íàáîðà çàïèñåé

Dim stCrit As String 'ñòðîêà äëÿ óñëîâèÿ âûáîðêè

Dim i As Integer

i = 0

stCrit = "KodAutor =" & Forms!Ïîèñê!Àâòîð

'óñòàíîâèòü ñîåäèíåíèå

Set cnn = CurrentProject.Connection

Set rec = New ADODB.Recordset

With rec

    .Open Source:="BooksAurors", ActiveConnection:=cnn, _

    CursorType:=adOpenStatic, LockType:=adLockReadOnly

    If .RecordCount = 0 Then

        MsgBox "Êíèãè îòñóòñòâóþò"

        Exit Sub

    End If

'èùåì ïåðâóþ çàïèñü ïî êðèòåðèþ

    .Find Criteria:=stCrit, SearchDirection:=adSearchForward

'åñëè íå íàøëè, òî âûõîäèì

    If .EOF Then

        MsgBox "Âàêàíñèè îòñóòñòâóþò"

        Exit Sub

    Else

        Do While Not .EOF

            ReDim Preserve idList(i)

            idList(i) = ![ÊîäÀâòîðà]

            i = i + 1

            'ñëåäóþùàÿ çàïèñü

            .Find Criteria:=stCrit, SkipRecords:=1

        Loop

    End If

'çàêðûâàåì îáúåêò

    .Close

End With

cnn.Close

Set rec = Nothing

Set cnn = Nothing

End Sub

Использование метода Seek

Sub SeekAuthor()

Dim cnn As ADODB.Connection 'îáúåêò äëÿ ñîåäèíåíèÿ ñ ÁÄ

Dim rec As ADODB.Recordset 'îáúåêò äëÿ íàáîðà çàïèñåé

Set cnn = New ADODB.Connection

With cnn

               . Provider = ”Microsoft.Jet.OLEDB.4.0”

               .Open “C:\Biblioteka.mdb”

End With

Set rec = New ADODB.RecordSet

stTable = “Authors”

With rec

               .Index =”Фамилия”

               .Open Source := stTable, _

                              ActiveConnection := cnn, _

                              CursorType:=adOpenKeySet, _

                              LockType:=adLockOptimistic, _

                              Options:=adCmdTableDirect

               .Seek KeyValues = “Петров”, SeekOption = adSeekFirstEQ

         If .EOF Then

                              MsgBox “Не нашли”

                              Exit Sub

               End If

Иначе – обрабатываем найденную запись

               .Close

End With

cnn.Close

Set rec = Nothing

Set cnn = Nothing

End Sub

Примеры работы с записями в ADO

Set rec = New ADODB.Recordset

With rec

    .ActiveConnection = cnn

    .CursorType = adOpenKeyset

    .Open Source:="pasport"

Добавление новой записи в ADO

    .Addnew

    ![Фамилия]= “Гераськин”

    ![Имя]= “Иван”

     ![Отчество]= “Драбоданович”

     .MoveFirst

Редактирование текущей  записи в ADO

    ![Фамилия]= “Светлов”

    ![Имя]= “Герман”

     ![Отчество]= “Выферевич”

     .MoveLast

Удаление текущей записи

     .Delete

End With

Похожие материалы

Информация о работе

Тип:
Дополнительные материалы
Размер файла:
40 Kb
Скачали:
0