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

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
30.03.2004, 20:17
    #32462888
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ADO Recordset.Filter и CopyFromRecordset
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
31.03.2004, 10:48
    #32463369
VZ
VZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ADO Recordset.Filter и CopyFromRecordset
Согласен, есть такое дело :( Тогда можно так:
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
31.03.2004, 11:38
    #32463519
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ADO Recordset.Filter и CopyFromRecordset
блин жопа какая-то
пытаюсь все это воспроизвести - а у меня CopyFromRecordset отказывается ADO-шный рекордсет жрать :((
Сцука злая, говорит что "Class does not support Automation or does not support expected interface"
Бред какой-то... Ведь точно помню что оно с ADO работает... Или 97-й эксель еще не умеет ADO переваривать?
...
Рейтинг: 0 / 0
31.03.2004, 15:51
    #32464235
VZ
VZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ADO Recordset.Filter и CopyFromRecordset
Смотрю в 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
01.04.2004, 17:18
    #32465969
VZ
VZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ADO Recordset.Filter и CopyFromRecordset
Ну так что, есть желающие подсказать как из одного рекордсета выборку в другой рекордсет можно было сделать, что-бы потом его в Excel с помощью CopyFromRecordset слить?

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


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