powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по ADO Recordset.Filter и CopyFromRecordset
10 сообщений из 10, страница 1 из 1
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32462668
VZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VZ
Гость
Привет всем!
Посмотрел кучу топиков, но ответа так и не нашел, по-этому прошу помощи :(

Set recSet = cmd.Execute
recCnt = recSet.RecordCount (=85)

recSet.Filter = "DispatchGroup LIKE '*21200*'"
recCnt = recSet.RecordCount (=1)

Set recSet1 = recSet
recCnt = recSet1.RecordCount (=1)

бла-бла-бла

ws.Range("A2").CopyFromRecordset recSet
ws1.Range("A2").CopyFromRecordset recSet1

В обоих случаях в Excel добавляется 85 строк :(
Кто знает, что за хрень или что я делаю криво?
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32462888
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset

rs.Open "select * from dMetae", CurrentProject.Connection, adOpenDynamic
Set rs1 = rs
Debug.Print rs.RecordCount
Debug.Print rs1.RecordCount
rs.Filter = "KeyField=4"
Debug.Print rs.RecordCount
Debug.Print rs1.RecordCount
rs.Filter = ""
Debug.Print rs.RecordCount
Debug.Print rs1.RecordCount

Этот код возвращает:
1422
1422
1
1
1422
1422

В данном случае и rs, и rs1 ссылаются на один объект, и делая что-то с одним, мы получаем аналогичную ситуацию в другом. У тебя происходит то же самое

Set recSet1 = recSet

сделай
Set recSet = cmd.Execute
Set recSet1 = cmd.Execute
recSet1.Filter = "DispatchGroup LIKE '*21200*'"
recCnt = recSet.RecordCount (будет =85)
recCnt = recSet1.RecordCount (будет =1)
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32463369
VZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VZ
Гость
Согласен, есть такое дело :( Тогда можно так:
Set recSet = cmd.Execute
Set recSet1 = recSet.Clone
recSet1.Filter = "DispatchGroup LIKE '*21200*'"
Тогда recSet.RecordCount будет =85, а recSet1.RecordCount будет =1

Но при записи что того, что другого в Excel в обоих случаях пишется по 85 записей. А желание есть писать на один лист все записи, а на последующие по опр-му фильтру. Может быть можно решить эту задачу каким-то другим изящьным способом, а то я не дока в аксессе, пришлось, так зказать.

P.S. запускать два раза cmd.Execute погано, там тяжелая процедура на серваке запускается, много ресурсов жрет.
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32463519
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин жопа какая-то
пытаюсь все это воспроизвести - а у меня CopyFromRecordset отказывается ADO-шный рекордсет жрать :((
Сцука злая, говорит что "Class does not support Automation or does not support expected interface"
Бред какой-то... Ведь точно помню что оно с ADO работает... Или 97-й эксель еще не умеет ADO переваривать?
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32464235
VZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VZ
Гость
Смотрю в MSDN 6 и вижу там:

Microsoft Excel 97 for Windows


SYMPTOMS
When you use Microsoft Data Access Objects version 3.0 (DAO 3.0) with Microsoft Excel 97, you may receive the following error message:


Run-time error '430':
Class doesn't support Automation

CAUSE
You will receive the error message given above if both of the following are true:

You are referencing the DAO 3.0 object library.


-and-

You are using the CopyFromRecordset method in your macro.

RESOLUTION
Change your project in Microsoft Excel 97 so that it references DAO 3.5 instead of DAO 3.0:


In the Visual Basic Editor, click References on the Tools menu.

Clear the "Microsoft DAO 3.0 Object Library" check box.

Select the "Microsoft DAO 3.5 Object Library" check box and click OK.

STATUS
This is by design of Microsoft Excel 97.

Это правда про DAO, но может поможет.

У меня Access2002 SP2
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32465969
VZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VZ
Гость
Ну так что, есть желающие подсказать как из одного рекордсета выборку в другой рекордсет можно было сделать, что-бы потом его в Excel с помощью CopyFromRecordset слить?

Или такой вариант: как бы создать рекордсет на основе выборки из другого рекордсета.
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32465976
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э-ээ...
А может, временные таблицы все-таки?..
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32465986
VZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VZ
Гость
Думал об этом. Видимо прийдется так и сделать. Хотя жалко, я надеялся, что сам рекордсет как-нибудь колбасить можно. :(
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32465993
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО токо так, потому что делать цикл по RecordSet с присваиванием из одного в другой это жуткий стопкран (если конечно recordset совсем маленький, тогда уж пофиг )
...
Рейтинг: 0 / 0
Вопрос по ADO Recordset.Filter и CopyFromRecordset
    #32466136
VZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VZ
Гость
Убого блин :( по идее рекордсет это ведь набор записей, считай таблица. Кайфово бы к нему и обращаться, как к таблице можно было. Это они там не додумали :(
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по ADO Recordset.Filter и CopyFromRecordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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