Современные программные средства Часть 3
Тема Передача данных между приложениями Windows
Лекция 2 Доступ к внешним данным из приложений Office
DAO (Data Access Oobject) - отдельная библиотека объектов и связанных с ними методов
1. Установление ссылки на библиотеку
Меню Ссылки в модуле VB
2. Иерархия объектов доступа к данным
DBEngine Database TableDef QueryDef RecordSet Field Index
3. Доступ к данным внешних баз данныхформата JET:
Наиболее быстрая связь с БД в формате Jet (.MDB файлы)
Пример связи БД
Sub JetConnect()
Dim db As DataBase
Dim rs As RecordSet
Set db = OpenDatabase(“C:\MSOffise\Access\Sampes\Nwind.MDB”)
Set rs = db.OpenRecordSet(“Customers”, dbOpenTable)
MsgBox “База “& db.name & “открыта успешно”
db.Close
End Sub
OpenDatabase(имя_БД, исключ_доступ, только_для_чтения, источник)
true/false true/false
db.OpenRecordSet (имя_табл/запроса/SQL, тип, опции
Тип: dbOpenTable, dbOpenDynaset, dbOpenSnapShot,
Опции: dbAppendOnly, dbReadOnly
4. Доступ к данным внешних баз данныхформата НЕ JET:
Sub NonJetConnect()
Dim db As DataBase
Dim rs As RecordSet
Dim tdFox As TableDef
Set db = OpenDatabase(“C:\MSOffise\Access\Sampes\Nwind.MDB”)
Set tdFox=db.CreateTableDef(“Linked FoxPro Table”)
tdFox.Connect=”FoxPro 2.6;DATABASE=C:\Progra-1\Common~1\Msquery”
tdFox.SourseTableName = “Customer”
Присоединить таблицу для создания связи
db.TableDefs.Append tdFox
Открыть набор записей
Set rs = db.OpenRecordSet(“Linked FoxPro Table”, dbOpenSnapshot)
MsgBox “База “& db.name & “открыта успешно”
db.Close
End Sub
tdFox.Connect = тип_базы; DATABASE=путь тип_базы: dBase III, dBase IV, dBase 5, Paradox 3.x, Paradox 4.x, Paradox 5.x, Btrieve, FoxPro 2.0, FoxPro 2.5, FoxPro 2.6, Exel 3.0, Exel 4.0, Exel 5.0, Exel 7.0, Text
5. Связь БД в программной среде клиент/сервер
tableDef.Connect = “ODBC; DATABASE=имя_БД; UID = идентиф_пользователя; PWD = пароль; DSN =имя_источника_данных
6. Работа с объектами RecordSet
Процедура Excek для получения имен полей из БД
Sub DispleyField()
Dim db As DataBase
Dim rs As RecordSet
Dim fld As Field
Dim i As integer
Set db = OpenDatabase(“C:\MSOffise\Access\Sampes\Nwind.MDB”)
Set rs = db.OpenRecordSet(“Customers”, dbOpenSnapshot)
Активизировать окно Field Info
WorkSheets(“Field Info”).Activate
With WorkSheets(“Field Info”). [B1]
.Clear
.Offset(1).Clear
.Offset(3,-1).CurrentRegion.Offset(0,1).Clear
.Offset(1).Value = rs.Name
Перечислить поля набора
For i=0 To rs.field.Count - 1
Application.StatusBar=”Нумерация полей: “& i+1
Set fld = rs.Fields(i)
.Offset(3,i).Value = fld.Name
.Offset(4,i).Value = fld.AllowZeroLength
. . . . . . . . . . . . . . . . . . . ..
.Offset(1,i).EntireColumn.Autofit
Next i
.Value = db.Name
End With
db.Close
Application.StatusBar = False
End Sub
7. Открытие таблицы с помощью SQL
Sub DispleyField()
Dim db As DataBase
Dim rs As RecordSet
Dim selectStr As String
Set db = OpenDatabase(“C:\MSOffise\Access\Sampes\Nwind.MDB”)
selectStr = “SELECT CompanyName, Region, Country FROM Customers”& _
“FROM Customers “ &_
“WHERE Country = ‘Canada’ “ & _
“ORDER BY CompanyName”
Set rs = db.OpenRecordSet(selectStr)
. . . . . . . . . . . . . . . . . . . ..
db.Close
End Sub
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.