(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

AccessConnection

Источник: Rusimport

В Access 2002 появилось новое свойство CurrentProject.AccessConnection.
В проекте adp не имеет значения что использовать: CurrentProject.AccessConnection или CurrentProject. Connection, там это равнозначные свойства.
Различия проявляются при использовании в базе данных mdb. Вот что показывает окно отладки:

? CurrentProject.Connection
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\Мои документы\Access XP\2002.mdb

? CurrentProject.AccessConnection
Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data Source=D:\Мои документы\Access XP\2002.mdb;User ID=Admin;Data Provider=Microsoft.Jet.OLEDB.4.0

Т.е. CurrentProject.Connection использует только одного провайдера - Microsoft Jet OLEDB provider. А CurrentProject.AccessConnection использует двух провайдеров: одного для доступа к данным(параметр в строке подключения Data Provider) и другого сервис провайдера - Microsoft.Access.OLEDB.10.0. Вот этот самый другой и является сутью новшества.

Про ограничения нового сервис провайдера говорить не буду, хочу выделить только достоинства. С появлением в Access 2000 свойства формы Recordset, появилась возможность указать форме в качестве источника данных рекордсет DAO/ADO. Однако редактировать через интерфейс формы можно было только рекордсет DAO. Так вот, появление нового свойства CurrentProject.AccessConnection, а если говорить более обобщенно, нового сервис провайдера Microsoft.Access.OLEDB.10.0, сняло это ограничение в Access 2002. Теперь для того, чтоб указать форме в качестве источника данных рекордсет ADO, который будет обновляемым через интерфейс формы, необходимо чтобы Connection, в котором будет открыт этот рекордсет, использовал не только провайдера данных, но и сервис провайдера Microsoft.Access.OLEDB.10.0. Частным случаем этого правила является свойство CurrentProject.AccessConnection. Его удобно применять для открытия рекордсетов ADO, по таблицам текущей базы данных, с последующей их передачей формам в качестве источника данных.
Информации из MSDN по свойству CurrentProject.AccessConnection хватило для того, чтобы, поняв суть нововведения, использовать ее для работы с источниками данных, не присоединенными к базе данных, т.е. там, где CurrentProject.AccessConnection не может быть применен.
Привожу два примера, демонстрирующих использование в формах Access 2002 редактируемых рекордсетов ADO по разным источникам данных:

Sub Кmdb()
'Пример подключения к другому mdb через отдельный Connection
Dim rst As New ADODB.Recordset
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data Source=D:\Мои документы\Access XP\2002.mdb;User ID=Admin;Data Provider=Microsoft.Jet.OLEDB.4.0"
con.Open
rst.Open "Table1", con, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
End Sub

Sub КSQL()
'Пример подключения к SQL Server через отдельный Connection
Dim rst As New ADODB.Recordset
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data Source=VAKSHUL;User ID=sa;Initial Catalog=Динамика;Data Provider=SQLOLEDB.1"
con.Open
rst.Open "Table1", con, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
End Sub

Результаты экспериментов не могут не радовать. Добавлю, что в процессе эксперимента рекордсет формы проекта adp был присвоен в качестве источника данных формы библиотечной базы mdb, и его по-прежнему можно было редактировать. Похоже, границы между mdb и adp начинают стираться :)

Сказанное ранее хочу дополнить результатами дополнительных экспериментов.

1.
Имеется «родная» mdb таблица. Таблица имеет первичный ключ.
Подключение через ADO к этой таблице, создав новый конекшн или используя CurrentProject.AccessConnection, дает одинаковый результат - результирующий набор в форме редактируемый.
_________
Dim rst As New ADODB.Recordset
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data Source=D:\Мои документы\Access XP\2002.mdb;User ID=Admin;Data Provider=Microsoft.Jet.OLEDB.4.0"
con.Open
rst.Open "Table2", con, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
___________
___________
Dim rst As New ADODB.Recordset
rst.Open "Table2", CurrentProject.AccessConnection, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
___________

Удалим в таблице первичный ключ.
Результат в обоих способах подключения одинаковый - результирующий набор в форме Не редактируемый.

2.
Имеется не присоединенная к mdb базе таблица SQL Sever. Таблица имеет первичный ключ.
Подключение через ADO к этой таблице в результате дает редактируемый набор в форме.
___________
Dim rst As New ADODB.Recordset
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data Source=VAKSHUL;User ID=sa;Initial Catalog=Динамика;Data Provider=SQLOLEDB.1"
con.Open
rst.Open "tbl", con, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
___________

Удалим в таблице первичный ключ.
Результат подключения через ADO к этой таблице в результате дает НЕ редактируемый набор в форме.

3.
Имеется присоединенная к mdb базе таблица формата dbf. При присоединении было указано поле, выполняющего функцию поля первичного ключа.
Подключение через ADO к этой таблице, создав новый конекшн или используя CurrentProject.AccessConnection, дает одинаковый результат - результирующий набор в форме редактируемый.
__________
Dim rst As New ADODB.Recordset
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=False;Data Source=D:\Мои документы\Access XP\2002.mdb;User ID=Admin;Data Provider=Microsoft.Jet.OLEDB.4.0"
con.Open
rst.Open "comptyp", con, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
__________
__________
Dim rst As New ADODB.Recordset
rst.Open "comptyp", CurrentProject.AccessConnection, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
__________

Переприсоединим таблицу dbf к базе без указания поля первичного ключа.
Результат в обоих способах подключения одинаковый - результирующий набор в форме Не редактируемый.

4.
Имеется не присоединенная к mdb базе таблица dbf. Таблица, естественно, не имеет первичного ключа.
Подключение через ADO к этой таблице в результате дает HE редактируемый набор в форме.
____________
Dim rst As New ADODB.Recordset
Dim con As New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Access.OLEDB.10.0;Data Provider=MSDASQL.1;Extended Properties=""DSN=Belch_dbf;UID=;PWD=;SourceDB=D:\Мои документы\dbf\Prod_dbfs;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"""
con.Open
rst.Open "select * from comptyp", con, adOpenKeyset, adLockOptimistic
Set Me.Recordset = rst
_____________

Прослеживается совершенно четкая закономерность. Таблица, имеющая первичный ключ, или то, что может трактоваться как первичный ключ, является обновляемой через интерфейс формы и не обновляемой при отсутствии такового.

Я не знаю, может возможности нового сервис провайдера и ограничены, и пока он позволяет редактировать данные в формах, основанные на рекордсетах ADO только избранных поставщиков данных, но в любом случае нужную таблицу можно будет присоединить к mdb файлу и открыть ADO-шный рекордсет уже по ней, использовал в качестве конекшн CurrentProject.AccessConnection. Набор данных формы, получившей этот рекордсет в качестве источника данных, будет редактируемый.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 27.09.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft 365 Apps for business (corporate)
Microsoft 365 Business Standard (corporate)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерные книги. Рецензии и отзывы
Мир OLAP и Business Intelligence: новости, статьи, обзоры
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100