Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
для начала:
.addnew

метод рекордсета в jet позволяет взять к примеру значение из поля autonumber
если в переде этим было задано значение какому то полю в добавляемой записи.

я пробовал в ADO это не прокатило у меня.
то есть ADO->SERVER
а тут JET и все.
то есть по любому ADO соберет с меня всю инфу для этого метода, и потом кинет ее серваку?
какие выходы?
1.stored procedure w @@IDENTITY
2.?
3.?
...
22 апр 05, 19:38    [1491351]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
вторая непонятность:
data link properties в adp проекте.
как написано что adp проект может использовать токо в качестве провайдера MS DATA SHAPE OLEDB с поставщиком данных в лице SQLOLEDB.
поэтому в свойствах проекта adp и нету закладки для выбора провайдера...
и вот для currentproject.connection , Access выбирает microsoft access oledb 11 провайдера!и никакого там data shape и нету.но поставщик везде один SQLOLEDB.
кто нить может расставить все по полочкам?
22 апр 05, 19:55    [1491402]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
третье:
для создания recordset`a в vba методом OPEN(ADO) ,что лучше использовать acCmdText или сохраненную процедуру,вернее как распределяеться вычислительные мощности между клиентом и сервером?
23 апр 05, 12:06    [1492165]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
Alexey Sh
Member

Откуда: SPB
Сообщений: 1930
I.@@IDENTITY - в этом и MSSQL форуме регулярно обсуждается.Поиск поможет
II. Аксесс для работы использует OLEDB сервис-провайдер
Microsoft.Access.OLEDB.10.0 (есть у него на это причины), который уже дальше работает с настоящим провайдером SQLOLEDB. Прокладка для удобства работы самого аксесса

Сравни в adp
CurrentProject.Connection.ConnectionString
CurrentProject.BaseConnectionString

DATA SHAPE на данном этапе - не бери в голову

III. по поводу хранимых процедур - да, использовать
причём не только для добавления/изменения данных, но и для извлечения
23 апр 05, 12:28    [1492188]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
Alexey Sh
I.@@IDENTITY - в этом и MSSQL форуме регулярно обсуждается.Поиск поможет
II. Аксесс для работы использует OLEDB сервис-провайдер
Microsoft.Access.OLEDB.10.0 (есть у него на это причины), который уже дальше работает с
поставщиком данных (не провайдером)
SQLOLEDB. Прокладка для удобства работы самого аксесса

Сравни в adp
CurrentProject.Connection.ConnectionString
CurrentProject.BaseConnectionString

DATA SHAPE на данном этапе - не бери в голову

III. по поводу хранимых процедур - да, использовать
причём не только для добавления/изменения данных, но и для извлечения

по второму:
то есть в свойствах подключения проекта....по умолчанию вот Microsoft.Access.OLEDB.10.0 - это выбрано?но вот парадокс маленький:)
такого провайдера не существует...
msdatashape ну просто были сомнения, я знаю что его access юзает для формирования отчетов.через него я сам отчеты формирую.

автор
Прокладка для удобства работы самого аксесса

это как так? сервис пров обрабатывает, а поставщик отдает данные.или тут еще какой то слой по вашему?

автор

CurrentProject.Connection.ConnectionString
CurrentProject.BaseConnectionString

вот кстати да....сравнил, это уже многое поясняет.

автор
You can use the ConnectionString property returns the base connection string for the DataAccessPage object.

опа :) то есть Microsoft.Access.OLEDB.10.0 для DataAccessPage юзаеться, а для данных как и положено SQLOLEDB.

то есть надо использвать то BaseConnectionString .....

то есть , access юзает три разных сервис прова:
1. для данных SQLOLEDB(CurrentProject.BaseConnectionString)
2.для отчетов MS DATA SHAPE
3.для Страниц доступа Microsoft.Access.OLEDB.10.0(CurrentProject.Connection.ConnectionString)

теперь все отностильно сервис провайдеров из области OLEDB в Access стало понятно.

автор
третье:
для создания recordset`a в vba методом OPEN(ADO) ,что лучше использовать acCmdText или сохраненную процедуру,вернее как распределяеться вычислительные мощности между клиентом и сервером?

а что по этому вопросу?

и по первому:
автор
1.stored procedure w @@IDENTITY
2.?
3.?

я хотел узнать есть ли 2 или 3 или еще может какие способы...
23 апр 05, 13:54    [1492261]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
автор
Remarks
The AccessConnection property returns an ADO connection that uses two OLE DB providers. It uses the Microsoft OLE DB Provider for Microsoft Jet (Microsoft.Jet.OLEDB.4.0) as the data provider and the Microsoft OLE DB Provider for Microsoft Access 10 (Microsoft.Access.OLEDB.10.0) as the service provider.

You should use the AccessConnection property if you intend to create ADO recordsets that will be bound to Access forms. The form will not be updateable unless it is created by using the OLE DB Provider for Microsoft Access 10, even if the recordset is updateable in ADO.

вот оно:)
23 апр 05, 14:05    [1492267]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
You should use the AccessConnection property if you intend to create ADO recordsets that will be bound to Access forms. The form will not be updateable unless it is created by using the OLE DB Provider for Microsoft Access 10, even if the recordset is updateable in ADO.

вот это очень и очень.......
вы должны использовать провайдер Microsoft.Access.OLEDB.10.0 если вы хотите назначить рекордсет форме! и в этом случае форма не будет обновляема в любом случае.....
вот это да...
правда это как бы рекомендательный характер носит:) то есть должен , но не обязан.
23 апр 05, 14:09    [1492275]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
Alexey Sh

DATA SHAPE на данном этапе - не бери в голову


автор
The Connection property actually returns a reference to a copy of the ActiveX Data Object (ADO) connection for the active database. Thus, applying the Close method or in anyway attempting to alter the connection through the Connection object’s methods or properties will have no affect on the actual connection object used by Microsoft Access to hold a live connection to the current database. Since the Connection property is the main Shape provider connection, the following information is necessary when using this property.

MSDataShape uses Recordset.CursorLocation = adUseClient. Do not set CursorLocation prior to assigning a recordset to CurrentProject.Connect.


MSDataShape uses Recordset.CursorType = adOpenStatic. Do not set CursorType prior to assinging a recordset to CurrentProject.Connection.


MSDataShape accepts Recordset.LockType = adLockOptimistic, adLockBatchOptimistic, or adLockReadOnly (default). If set to adLockPessimistic, it is changed to adLockOptimistic.


The shape connection does not support the all ADOX operation, specifically the Columns.Properties collection is not supported.


In order to ensure that a shape connection will work correctly, the Command.CommandType must be set to adCmdTable.


ну то есть то есть.....:) то есть CurrentProject.Connection.ConnectionString не отображает истинного сервис провайдера который юзает access для SQLOLEDB.
на самом то деле все правильно сервис провайдер MSDATASHAPE а поставщик(источник данных) SQLOLEDB(SQLSERVER).
23 апр 05, 14:13    [1492280]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
АлексейК
Member

Откуда: http://www.msdatabase.ru , Moscow
Сообщений: 7683
автор
для начала:
.addnew

метод рекордсета в jet позволяет взять к примеру значение из поля autonumber
если в переде этим было задано значение какому то полю в добавляемой записи.

в ADP , адо тоже можно.
правда вроде только после update
(возможно зависит от типа идинта для репликации или нет, и типа рекордсета ) будет минутка свободная - разберусь детально.
23 апр 05, 14:16    [1492282]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
чет малось запутано все.
23 апр 05, 14:17    [1492283]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
АлексейК
Member

Откуда: http://www.msdatabase.ru , Moscow
Сообщений: 7683
mainRS.addnew
mainRS!TXT = "блабла"
mainRS.update
MainrsID = mainrs!id 'Именно здесь а не строкой выше


detailRS.addnew
detailRS!idmain =  mainrsID

...
23 апр 05, 14:24    [1492288]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
The ConnectionString property returns the connection string that was set through the OpenConnection method or by clicking Connection on the File menu.When making a connection, Microsoft Access project modifies the ConnectionString property for use with the ADO environment. The Microsoft Office Data Source Control (MSODSC) likewise modifies the ConnectionString.

то есть проходит как минимум одна модификация строки ConnectionString , а иногда и два раза:)
но не главного коннекта....поэтому baseconnectionstring и заведен:)
то есть currentproject.connection.execute метод идет с какой строкой подключения ?
так как rescordset.open ,currentproject.connection,,,
идет со свойствами connectionstring(не используеться провайдер SQLOLEDB)
поэтому и нельзя в таком случае открыть тип рекордсета отличный от :
автор
MSDataShape uses Recordset.CursorLocation = adUseClient. Do not set CursorLocation prior to assigning a recordset to CurrentProject.Connect.
MSDataShape uses Recordset.CursorType = adOpenStatic. Do not set CursorType prior to assinging a recordset to CurrentProject.Connection.
MSDataShape accepts Recordset.LockType = adLockOptimistic, adLockBatchOptimistic, or adLockReadOnly (default). If set to adLockPessimistic, it is changed to adLockOptimistic.
23 апр 05, 14:27    [1492291]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
АлексейК
mainRS.addnew
mainRS!TXT = "блабла"
mainRS.update
MainrsID = mainrs!id 'Именно здесь а не строкой выше


detailRS.addnew
detailRS!idmain =  mainrsID

...


:) это работает.спасибо.

видать отдыхать надо почаще:)
23 апр 05, 15:40    [1492338]     Ответить | Цитировать Сообщить модератору
 Re: проблемы при переходе в OLEDB с Jet (mdb->adp)  [new]
AlexeiK
Member

Откуда:
Сообщений: 2859
стоит проанализировать базу NorthWind.adp, модуль Startup из Msaccess ...там есть полезные коды.идет в поставке с msaccess , находиться в меню Помощь.
24 апр 05, 23:20    [1493255]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить