Разработано и используется приложение на MS Access 2003. В качестве базы данны используется MS SQL Server 2000. Для ведения базы данных разработано около 200 хранимых процедур, которые обеспечивают выполнение операций вставки и обновления. Каждая процедура имеет свой определенный набор параметров. По результатам выполнения процедуры возвращают код ошибки, и если он не 0 то и описание ошибки.
При попытке перехода на 2013 Access выясняется, что DAO больше не поддерживается. Т.е. код:
Set wrkODBC = CreateWorkspace("ODBCWorkspace7", CurrentUser, "", dbUseODBC)
Set cnnSQL = GetConnection(wrkODBC)
Set rs = cnnSQL.OpenRecordset(Zapros, dbOpenDynaset, 0),
где Zapros=Update1_01 1,1,’Delivery’,1010, и т. д. Запрос формируется программным путем.
Больше не работает. Предлагают использовать ADO. Но использовать напрямую, указывая, что выполняется хранимая процедура – кошмар. Описывать вручную все параметры для каждой процедуры – безнадежный случай. Любое изменение структуры и лезть в код?
Пробовал два варианта.
Первый.
Set cnn = New ADODB.Connection
StrConn = "Provider=SQLOLEDB;" & "Data Source=MDB;" &
"Initial Catalog= Violations; Trusted_Connection=Yes;"
cnn.ConnectionString = StrConn
cnn.ConnectionTimeout = 15
cnn.CommandTimeout = 30
cnn.Open
Set CnnRecordset = cnn.Execute(Zapros)
Процедура отрабатывает. Данные в БД изменяются. Но результаты обрботки не возвращаются.
Оператор While Not CnnRecordset.EOF не работает, так как набор не открыт.
Второй.
Set cnn = New ADODB.Connection
Set Cmd = CreateObject("ADODB.Command")
Cmd.ActiveConnection = cnn
Cmd.CommandType = adCmdUnknown
Cmd.CommandText = Zapros
Set CnnRecordset = CreateObject("ADODB.Recordset")
On Error GoTo AdoError
Set CnnRecordset = Cmd.Execute()
Процедура отрабатывает. Данные в БД изменяются. Но результаты обрботки не возвращаются.
Оператор While Not CnnRecordset.EOF не работает, так как набор не открыт.
Как добиться и выполнения процедуры и возврата результатов выполнения. Возврат параметров выполняется по команде Return.
http://www.sql.ru/forum/1127537/kak-vypolnit-cherez-ado-hranimuu-proceduru-i-poluchit-rezultaty-obrabotki-nazad-v-access