ADODB RecordSet как источник записи отчета о доступе

У меня есть простая форма, запрос и отчет в Access 2003. Мне нужно управлять результатами запроса в наборе записей с помощью VBA, а затем передавать их в отчет как его RecordSource.

Если я объявляю набор записей как RecordSet и использую его свойство Name в качестве RecordSource отчета, то он работает. Однако, поскольку мне нужно отредактировать набор записей, я подумал, что было бы проще использовать ADODB RecordSet, как показано ниже.

Набор записей объявлен как Dim rs As ADODB.RecordSet в глобальном модуле. Остальной код;

Dim db As Database
Set db = CurrentDb
Dim con As ADODB.Connection
Set con = CurrentProject.Connection
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = con
rs.Source = "Select * from XXX"
rs.LockType = adLockOptimistic
rs.CursorType = adOpenKeyset
rs.Open

'manipulate rs here....'

Раньше я передавал RecordSource отчета как myReport.RecordSource = rs.Name. Но ADODB не имеет свойства Name.

Как я могу передать этот набор записей в отчет как его RecordSource?

Спасибо


person Sivakanesh    schedule 15.11.2010    source источник
comment
Как вы думаете, почему вы должны это делать? Почему нельзя просто установить Recordsource в событии OnOpen отчета?   -  person David-W-Fenton    schedule 16.11.2010
comment
На самом деле я устанавливаю свойство RecordSource отчета в событии открытия отчета, но для этого требуется имя набора записей, а ADODB Recordset не имеет свойства name.   -  person Sivakanesh    schedule 17.11.2010
comment
Я говорю, что не используйте набор записей - просто установите SQL свойства Recordsource как SQL, который вы используете для открытия набора записей. Если есть какая-то причина, по которой это не сработает, я ее не вижу. Это стандартный способ сделать это вместо установки Recordset отчета (чего мне никогда не приходилось делать за все годы программирования Access).   -  person David-W-Fenton    schedule 18.11.2010
comment
@ David-W-Fenton, чего бы это ни стоило, бывают случаи, когда вы могли бы это сделать - если вам нужно создать сквозной запрос TSQL (для вызова хранимой процедуры) и установить для этого набор записей отчета.   -  person 7thGalaxy    schedule 31.10.2014


Ответы (2)


Вы не можете привязать отчет к набору записей ADO в mdb, только в adp: http://support.microsoft.com/?id=287437

person Fionnuala    schedule 15.11.2010
comment
Да, это невозможно с ADODB. Итак, я просто создал запрос на создание таблицы и обработал данные в нем. Затем просто привяжите отчет к этой таблице. - person Sivakanesh; 17.11.2010

У меня нет под рукой копии Access 2003, но по памяти вы просто делаете

Set Me.Recordset = rs

Только что взглянул на Microsoft KB, и похоже, моя память все еще работает!

http://support.microsoft.com/kb/281998

person Kevin Ross    schedule 15.11.2010