Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 приём данных из хранимой процедуры в recordset  [new]
melihron
Member

Откуда:
Сообщений: 32
Добрый день, коллеги.
Access 2003 формат mdb.
Хранимая процедура возвращает с SQL Server-а набор данных в формате ADODB.Recordset. Пытаюсь его назначить на форму - выдаёт ошибку :
Указанный объект не может являться значением свойства "набор записей" (Recordset)

  Dim rs As adodb.Recordset
  Dim cmd  As adodb.Command
  
  OpenDBConnect "mydb"
'---------------------------------
  Set cmd = New adodb.Command
  cmd.ActiveConnection = cn
  cmd.CommandText = "proc_name"
  cmd.CommandType = adCmdStoredProc

  cmd.Parameters.Refresh ' запрашиваем параметры для вызова процедуры

  cmd.Parameters("@name").value = ... ' задаём параметры для вызова функции
  cmd.Parameters("@pass").value = ...

  Set rs = cmd.Execute ' принимаем результаты запроса процедуры в rs

  Set dealerdynamic_order.Form.Recordset = rs ' пытаемся этот adodb-рекордсет назначить на форму 

на этом месте ругается

Но если делать не через процедуру, а напрямую запросом к sql-евским таблицам, то прокатывает.
  Dim rs As ADODB.Recordset
  
  Set rs = New ADODB.Recordset
  With rs
     Set .ActiveConnection = cn
     .source = "SELECT code,id FROM unit"
     .CursorLocation = adUseClient
     .CursorType = adOpenStatic
     .LockType = adLockReadOnly
     .Open
  End With

  Set Me.filterUnit.Recordset = rs
  filterUnit.Requery

Но напрямую нельзя держать открытыми таблицы на сервере, зато можно делать запросы к ним из функций-процедур.
.... Можно конечно в цикле построчно передавать каждый элемент списка, но так дольше. Подскажите плиз, кто знает.
27 май 19, 12:56    [21894699]     Ответить | Цитировать Сообщить модератору
 Re: приём данных из хранимой процедуры в recordset  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4366
Точно не помню, но попробуй так
Вер
melihron
  
 Dim cmd  As adodb.Command
  
  OpenDBConnect "mydb"
'---------------------------------
  Set cmd = New adodb.Command
  cmd.ActiveConnection = cn
  cmd.CommandText = "proc_name"
  cmd.CommandType = adCmdStoredProc

  cmd.Parameters.Refresh ' запрашиваем параметры для вызова процедуры

  cmd.Parameters("@name").value = ... ' задаём параметры для вызова функции
  cmd.Parameters("@pass").value = ...
With rs
     .CursorLocation = adUseClient
     .CursorType = adOpenStatic
     .LockType = adLockReadOnly
     .Open cmd
  End With
27 май 19, 13:11    [21894727]     Ответить | Цитировать Сообщить модератору
 Re: приём данных из хранимой процедуры в recordset  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4366
melihron, забыл дописать
  Dim rs As ADODB.Recordset
  
  Set rs = New ADODB.Recordset
27 май 19, 13:15    [21894730]     Ответить | Цитировать Сообщить модератору
 Re: приём данных из хранимой процедуры в recordset  [new]
melihron
Member

Откуда:
Сообщений: 32
етить... получилось... большое спасибо! : )
27 май 19, 13:23    [21894742]     Ответить | Цитировать Сообщить модератору
 Re: приём данных из хранимой процедуры в recordset  [new]
melihron
Member

Откуда:
Сообщений: 32
продолжение темы )
теперь сумму по полученным столбцам не считает... выражение =sum(amount) даёт ошибку

К сообщению приложен файл. Размер - 7Kb
27 май 19, 18:18    [21895107]     Ответить | Цитировать Сообщить модератору
 Re: приём данных из хранимой процедуры в recordset  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4366
melihron
теперь сумму по полученным столбцам не считает...
и фильтр, скорее всего работать не будет...
27 май 19, 19:27    [21895141]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить