Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,.. / 20 сообщений из 20, страница 1 из 1
16.12.2004, 16:56:38
    #32830846
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Есть ADP 2000(SP3).

Нужно изменить нижеперечисленные свойства для текущего соединения .
Так CurrentProject.Connection возвращает копию на текущее соединение и не позволяет переустановить его свойства:

Код: plaintext
1.
2.
3.
4.
Так в Immediate Window получаем :
CurrentProject.Connection.CursorLocation=adUseServer
?CurrentProject.Connection.CursorLocation=adUseServer
False

Как следствие не получается изменять и свойства RecordSet.LockType и т.д.

Вообще цель организовать пессимистическое блокирование записей в форме.
Свойства, которые требуется изменить :
Для формы :
Код: plaintext
1.
2.
3.
4.
5.
6.
Me - форма
with Me.Recordset
  .CursorLocation = adUseServer '  adUseClient
  .CursorType = adOpenKeyset    '  adOpenStatic  adOpenDynamic adOpenForwardOnly 
  .LockType = adLockPessimistic '  adLockOptimistic adLockBatchOptimistic adLockReadOnly 
end with 

Для текущего соединения проекта :

Код: plaintext
1.
2.
3.
4.
Set cnn = CurrentProject.Connection
With cnn
 Debug.Print .Mode, .CursorLocation, .CommandTimeout, .ConnectionTimeout, .IsolationLevel
end with

PS:
Описание свойств :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
.RecordSet :
'.CursorType :
'adOpenForwardOnly Forward-only cursor. Default. Identical to a static cursor except that you can only scroll forward through records. This improves performance in situations when you need to make only a single pass through a recordset. 
'adOpenKeyset      Keyset cursor. Like a dynamic cursor, except that you can't see records that other users add, although records that other users delete are inaccessible from your recordset. Data changes by other users are still visible. 
'adOpenDynamic     Dynamic cursor. Additions, changes, and deletions by other users are visible, and all types of movement through the recordset are allowed, except for bookmarks if the provider doesn't support them. 
'adOpenStatic      Static cursor. A static copy of a set of records that you can use to find data or generate reports. Additions, changes, or deletions by other users are not visible. 

'.LockType :
'adLockReadOnly        Default. Read-only-you cannot alter the data. 
'adLockPessimistic     Pessimistic locking, record by record-the provider does what is necessary to ensure successful editing of the records, usually by locking records at the data source immediately upon editing. 
'adLockOptimistic      Optimistic locking, record by record-the provider uses optimistic locking, locking records only when you call the Update method. 
'adLockBatchOptimistic Optimistic batch updates-required for batch update mode as opposed to immediate update mode. 

.Connection:
' .Mode :
'adModeUnknown        Default. Indicates that the permissions have not yet been set or cannot be determined. 
'adModeRead           Indicates read-only permissions. 
'C:\Family\Ira\Москомприват\Veksel\33.txtadModeWrite          Indicates write-only permissions. 
'adModeReadWrite      Indicates read/write permissions. 
'adModeShareDenyRead  Prevents others from opening connection with read permissions. 
'adModeShareDenyWrite Prevents others from opening connection with write permissions. 
'adModeShareExclusive Prevents others from opening connection. 
'adModeShareDenyNone  Prevents others from opening connection with any permissions. 


' .IsolationLevel :
'adXactUnspecified     Indicates that the provider is using a different IsolationLevel than specified, but that the level cannot be determined. 
'adXactChaos Default.  Indicates that you cannot overwrite pending changes from more highly isolated transactions. 
'adXactBrowse          Indicates that from one transaction you can view uncommitted changes in other transactions. 
'adXactReadUncommitted Same as adXactBrowse. 
'adXactCursorStability Default. Indicates that from one transaction you can view changes in other transactions only after they've been committed.  
'adXactReadCommitted   Same as adXactCursorStability. 
'adXactRepeatableRead  Indicates that from one transaction you cannot see changes made in other transactions, but that requerying can bring new recordsets. 
'adXactIsolated        Indicates that transactions are conducted in isolation of other transactions. 
'adXactSerializable    Same as adXactIsolated. 
...
Рейтинг: 0 / 0
16.12.2004, 17:00:47
    #32830865
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
авторВообще цель организовать пессимистическое блокирование записей в форме.

насколько я понимаю - этого нельзя сделать c SQLOLEDB провайдером.


(с выражением лица)
...
Рейтинг: 0 / 0
16.12.2004, 17:15:47
    #32830927
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
отцепить рекордсет от источника данных и вручную делать обновления
или выкиднуть нах интрумент(аксесс)
...
Рейтинг: 0 / 0
16.12.2004, 17:25:52
    #32830969
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Alexey Shотцепить рекордсет от источника данных и вручную делать обновления
или выкиднуть нах интрумент(аксесс)

можно и выкинуть. а пессимистические блокировки откуда появятся?
...
Рейтинг: 0 / 0
16.12.2004, 17:56:47
    #32831056
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Моделировать врукопашную
...
Рейтинг: 0 / 0
16.12.2004, 18:09:23
    #32831075
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Alexey ShМоделировать врукопашную
тогда можно и не выкидывать
...
Рейтинг: 0 / 0
16.12.2004, 18:12:21
    #32831086
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Согласен Просто желание выкинуть учащается
...
Рейтинг: 0 / 0
16.12.2004, 19:04:43
    #32831161
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
2 Victosha >
автор
Вообще цель организовать пессимистическое блокирование записей в форме.

насколько я понимаю - этого нельзя сделать c SQLOLEDB провайдером.


А как тогда организовать пессимистическое блокирование в Access ?

2 All Another >
Люди вы кончайте "выкиднуть нах интрумент(аксесс)"

2 Alexey Sh > Моделировать врукопашную
Че это имеется ввиду ?
...
Рейтинг: 0 / 0
16.12.2004, 19:18:53
    #32831174
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
ответье вот , плиз , почему , если я делаю

Перед запуском формы в отдельном модуле делаю

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Cnn2 As ADODB.Connection

Set Cnn2 = New ADODB.Connection '
' Не позволяет менять на Rs.LockType = adLockPessimistic , т.к. Provider Currentproject.Connection
' MSDataShape  не позволяет этого
' Cnn2.ConnectionString = CurrentProject.Connection.ConnectionString
Cnn2.ConnectionString = CurrentProject.BaseConnectionString ' Но здесь форма доступна только на чтение
Cnn2.CursorLocation = adUseServer
Cnn2.IsolationLevel = adXactRepeatableRead
Cnn2.Open
в форме :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Form_Open(Cancel As Integer)

  Set Rs = New ADODB.Recordset ' ,cnn1 as ADODB.Connection
  Rs.CursorLocation = adUseServer '  adUseClient
  Rs.CursorType = adOpenKeyset
  Rs.LockType = adLockPessimistic '  adLockOptimistic
  Rs.Open "select * from t1", Cnn2, , , adCmdText ' CurrentProject.Connection
  Set Me.Recordset = Rs

end sub

то при попытке редактирования формы светится в строке статуса сообщение
"форма доступна только на чтение " ???!
...
Рейтинг: 0 / 0
16.12.2004, 19:38:29
    #32831199
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Baseconnectionstring указывает на реальный источник данных
ConnectionString - на OLEDB сервис Provider=Microsoft.Access.OLEDB.10.0;
(можно посмотреть в currentproject.Connection.ConnectionString)

В доках сказано, что формы с данными не из Microsoft.Access.OLEDB.10.0 - необновляемы
...
Рейтинг: 0 / 0
16.12.2004, 20:34:02
    #32831247
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Тогда подскажите ,плиз, - как задать строку коннекта, чтобы форма была обновляемой и блокировка могла быть пессимистической.
...
Рейтинг: 0 / 0
16.12.2004, 20:46:16
    #32831256
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Тогда еще и неясно - что такое BaseConnectionString ?
Я думал, что это то же самое, что и и Currentproject.Connection.ConnectionString.
Почему они отличаться должны? Хотя, конечно, видно, что они отличаются.Но почему - не просекаю.
В Help сказано, что BaseConnectionString :
When making a connection, Microsoft Access project modifies the BaseConnectionString property for use with the ADO environment.
так и зачем он ее modifies ?
...
Рейтинг: 0 / 0
16.12.2004, 21:53:06
    #32831300
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
yunikiТогда подскажите ,плиз, - как задать строку коннекта, чтобы форма была обновляемой и блокировка могла быть пессимистической.


...ять, ...ять, ...ять....

что еще не сказали?

НЕ БЫВАЕТ у АДО с SQLOLEDB в любых вариациях и надстройках пессимистической блокировки на рекордсетах.

А чтобы форма была обновляемой - у рекордсета
должен быть .CursorLocation = adUseClient
...
Рейтинг: 0 / 0
17.12.2004, 00:31:54
    #32831350
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
2Victosha >Ну, чей-то запутал меня :

1)
В доках сказано, что формы с данными не из Microsoft.Access.OLEDB.10.0 - необновляемы
так у меня что данные не-из что-ли ?

Я пробовал в тестах две строки :
- "Provider=MSDataShape.1;Persist Security Info=False;Data Source=YUNIK\MSTEST; User ID=yunik;Integrated Security=SSPI;Initial
Catalog=Контакты;Data Provider=SQLOLEDB.1"

- "PROVIDER=SQLOLEDB.1;INTEGRATED SECURITY=SSPI;PERSIST SECURITY INFO=FALSE;INITIAL CATALOG=Контакты;DATA SOURCE=YUNIK\MSTEST "

2)
НЕ БЫВАЕТ у АДО с SQLOLEDB в любых вариациях и надстройках пессимистической блокировки на рекордсетах.

Так не бывает или бывает , но необновляемые формы получаются ?

Ну ,скажем, пессимистическую блокировку-то на рекордсетах можно устанавливать (см. хотя бы пример из Help по ADO.Connection для BeginTrans, CommitTrans, and RollbackTrans Methods )

Видимо высказывание относится для Recordseta формы,
т.е. при :
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseServer
Rs.CursorType = adOpenKeyset
Rs.LockType = adLockPessimistic
Rs.Open "select * from t1", CurrentProject.Connection, , , adCmdText
свойство Rs.LockType оказывается = adLockoptimistic.

а при
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseServer
Rs.CursorType = adOpenKeyset
Rs.LockType = adLockPessimistic
Rs.Open "select * from t1", CurrentProject.BaseConnectionString, , , adCmdText
все свойства Rs остаются как и было задано, НО форма при этом становится необновляемой.

3)
Ну если у формы не бывает при SQLOLEDB ( хотя я не понимаю его отличие от MSDataShape, у которого тоже есть в строке подключения фраза "Data Provider=SQLOLEDB' ) , то нельзя ли вообще через какого другого провайдера установить для формы Access пессимистическую блокировку ?

4) Как вообще если ничего выше нельзя - организовать по другому пессимистическую блокировку для ленточной формы в ADP проекте ?
Были какие-т опредложения "моделировать врукопашную", но что они значат, я не понял.
...
Рейтинг: 0 / 0
17.12.2004, 00:48:09
    #32831356
Alexey Sh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
смотри Difference Between Connection and AccessConnection Properties
особенно: There is one main advantage for using the CurrentProject.AccessConnection property. Microsoft recommends you use CurrentProject.AccessConnection if you intend to create ADO recordsets that will be bound to Access forms. This is because the form will not be updateable unless it is created using the Microsoft Access 10 OLEDB provider, even if the recordset is updateable in ADO.
...
Рейтинг: 0 / 0
17.12.2004, 08:28:29
    #32831481
Latuk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Насколько я помню
у Гетца про это (пессимистическое блокирование )
все сказано и пример есть как самому делать.
...
Рейтинг: 0 / 0
17.12.2004, 12:51:41
    #32832119
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
2 Latuk >
Насколько я помню
у Гетца про это (пессимистическое блокирование )
все сказано и пример есть как самому делать.

Нет, ну странный человек, если бы у меня был Гетц, я бы не ходил по форумам.
2 Alexey Sh >
Насчет
- AccessConnection Properties
- Microsoft Access 10 OLEDB provider
У меня ADP 2000(SP3), как я сказал в самом начале и
Код: plaintext
1.
2.
3.
?CurrentProject.BaseConnectionString
PROVIDER=SQLOLEDB. 1 ;INTEGRATED SECURITY=SSPI;PERSIST SECURITY INFO=FALSE;INITIAL CATALOG=Контакты;DATA SOURCE=YUNIK\MSTEST
?CurrentProject.Connection.ConnectionString
Provider=MSDataShape. 1 ;Persist Security Info=False;Data Source=YUNIK\MSTEST;Integrated Security=SSPI;Initial Catalog=Контакты;Data Provider=SQLOLEDB. 1 
И я не понимаю Microsoft Access 10 OLEDB provider и то, что у меня "PROVIDER=SQLOLEDB.1" будут отличны для данного вопроса или нет?
НУ и ,конечно, AccessConnection Propertie у меня тоже нет.
...
Рейтинг: 0 / 0
17.12.2004, 12:56:19
    #32832131
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
2 Alexey Sh > Да ссылка не работает. Хотя там ,видимо, про Access2002 или выше, т.к. ,повторяюсь, у меня нет такого ни свойства ни провайдера.Просто интересно - в A2002 можно что ли добиться пессимистической блокировки в форме ?
Т.е. остается неясность по всем поставленым вопросам, включая и первоначальный - можно ли изменять свойства CurrentProject.Connection ?
...
Рейтинг: 0 / 0
17.12.2004, 13:35:36
    #32832233
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
yuniki2 Alexey Sh > Да ссылка не работает. Хотя там ,видимо, про Access2002 или выше, т.к. ,повторяюсь, у меня нет такого ни свойства ни провайдера.Просто интересно - в A2002 можно что ли добиться пессимистической блокировки в форме ?
Т.е. остается неясность по всем поставленым вопросам, включая и первоначальный - можно ли изменять свойства CurrentProject.Connection ?
автор
Difference Between Connection and AccessConnection Properties
Article ID : 281784
Last Review : October 29, 2003
Revision : 1.0
This article was previously published under Q281784
Advanced: Requires expert coding, interoperability, and multiuser skills.

This article applies to a Microsoft Access database (.mdb) and to a Microsoft Access project (.adp).

On this Page
SUMMARY SUMMARY
MORE INFORMATION MORE INFORMATION
REFERENCES REFERENCES
SUMMARY
This article discusses the differences between the CurrentProject.Connection and the CurrentProject.AccessConnection properties in Microsoft Access 2002 or later.
MORE INFORMATION
The CurrentProject.Connection property was introduced in Microsoft Access 2000. It allows developers who are writing ADO code in Microsoft Access to share the same ADO connection that is used by Microsoft Access for the currently open database (Jet or SQL Server database). This keeps developers from having to open and manage separate ADO connections when they need to manipulate the database that is currently open in Microsoft Access.

The CurrentProject.AccessConnection property was introduced in Microsoft Access 2002. Like the CurrentProject.Connection property, it allows developers to share an ADO connection with Microsoft Access. The difference between these properties depends on whether you are using an Access project (that is, a SQL Server database, ADP) or a Jet database (MDB) file in Microsoft Access.
Access Projects (ADPs)
When you are using an Access project (ADP) in Microsoft Access 2002 or later, there is no difference between the CurrentProject.Connection and the CurrentProject.AccessConnection properties. Both properties return an ADO connection that uses the SQL Server OLEDB provider (SQLOLEDB) as the data provider and the Microsoft Access 10 OLEDB provider (Microsoft.Access.OLEDB.10.0) as a service provider.

NOTE: The Microsoft Access 10 OLEDB provider is an OLEDB service provider that was written specifically for use in Microsoft Access. It was not designed to be used in applications other than Microsoft Access, and it is unsupported in other applications.

Here is a typical connection string that is returned by either property for an ADP that is connected to a SQL Server database:
Provider=Microsoft.Access.OLEDB.10.0;Persist Security Info=True;Data Source=MySQLServer;User ID=<username>;Password=<strong password>";Initial Catalog=NorthwindCS;Data Provider=SQLOLEDB.1
Jet Databases (MDBs)
When you are using a Jet database in Microsoft Access 2002 or later, the CurrentProject.Connection and CurrentProject.AccessConnection properties return different ADO connections. You can use either property when you are writing ADO code in a Jet database. However, there are certain situations where each property is useful. What follows is a breakdown of what each property returns in Microsoft Access 2002 or later, and what you should consider before using these properties.

CurrentProject.Connection
The CurrentProject.Connection property behaves exactly as it did in Microsoft Access 2000. It returns an ADO connection using the Microsoft Jet OLEDB provider (Microsoft.Jet.OLEDB.4.0 provider). For example, here is a typical connection string that is returned for a Jet database that is using the CurrentProject.Connection property:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb
There are several scenarios where you should use CurrentProject.Connection. If your application requires any of the following features, you should use CurrentProject.Connection to return the ADO connection.
• Jet and Replication Objects (JRO) code.
• Microsoft ADO Extensibility for DDL and Security (ADOX) code.
• ADO code that requires Index support for ADO recordsets, such as the Seek method.
The Microsoft Access 10 OLEDB provider does not fully support the required OLEDB interfaces necessary for these features to work. If your application requires these features, you must use a connection created with the Jet OLEDB provider, which is returned by the CurrentProject.Connection property.
CurrentProject.AccessConnection
The CurrentProject.AccessConnection property will return an ADO connection that uses two OLEDB providers. It uses the Jet OLEDB provider (Microsoft.Jet.OLEDB.4.0) as the data provider and the new Microsoft Access 10 OLEDB provider (Microsoft.Access.OLEDB.10.0) as a service provider. For example, here is a typical connection string that is returned for a Jet database that is using the CurrentProject.Connection property:
Provider=Microsoft.Access.OLEDB.10.0;Data Source=C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb;User ID=Admin;Data Provider=Microsoft.Jet.OLEDB.4.0
There is one main advantage for using the CurrentProject.AccessConnection property. Microsoft recommends you use CurrentProject.AccessConnection if you intend to create ADO recordsets that will be bound to Access forms. This is because the form will not be updateable unless it is created using the Microsoft Access 10 OLEDB provider, even if the recordset is updateable in ADO.
REFERENCES
For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
281998 How to Bind Microsoft Access Forms to ADO Recordsets
...
Рейтинг: 0 / 0
17.12.2004, 15:17:12
    #32832591
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,..
Прочитал, спасибо.
Но , суть того, что написана следующая :
Если у Вас MDB база , но начиная с Access2002 Вы можете присоединять к формам источники из внешних Access MDB за счет нового провайдера Microsoft.Access.OLEDB.10.0

Ну , а если не так : т.е. у Вас APD проект, или надо присоединять не внешние MDB файлы , а , просто ,как у меня SQL сервер таблицу, то ничего не сказано, что форма будет редактируемой. Видимо и не будет ;) ;(
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ADP. Как менять свойства соединенеия (.IsolationLevel,...) и рекордсета формы(.LockType,.. / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]