|
|
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
сабж пишу следующий код Код: plaintext 1. 2. 3. 4. 5. так вот, после сортировки получается что nrs содержит теже данные что и rs, тоесть фильтр отработал на rs, но при открытии nrs в нем находятся все равно все данные, без учета установленного фильтра как победить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 18:02:21 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 18:17:10 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
проблема в том чтобы открыть новый рекорсет на основе имеющегося, но новый должен содержать только те данные которые возвращает первый рекордсет в режиме фильтра rs(в режиме фильтра) = nrs(без фильтра) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 18:20:40 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
могу объяснить зачем это надо дело в том что фильтр сложный и задать его строкой нельзя, поэтому фильтр задается на основе массива букмаков, но после того как происходить сортировка фильтр отваливается, что и логично, так как после сортировки букмаки соответственно портятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 18:30:16 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Неужели нет такой возможности, или никто ничего не знает возникает тогда закономерный вопрос: чем отличается nrs.Open rs, cnn от Set nrs = rs.Clone получается что ничем и тогда возникает другой закономерный вопрос: а какого хрена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 11:40:47 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
почти всегда можно не букмарки в список составлять а значения ключевого поля таблицы. когда нужно открыть фильтрованный рекордсет SQL = " select ... where id in (" & списокИД & ")" по крайней мере я делаю так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 13:08:58 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
это и так понятно, но ведь вопрос был не про это дело в том что у меня отсойдененный ркордсет, который хранит реестр объектов моей базы данных, на крупных предприятиях этот реестр на данный момент уже превышает 50000 записей, а так как реестр объектов это таблица наиболее часто используемая в приложении, то получается очень накладно гонять такое количество данных по сети, что бы их них потом отсортировалось всего пару тысяч аксеес это всетаки не SQL сервер, а сразу на SQL перескочить возможности нету, так как основная часть приложения с использованием DAO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 13:18:40 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
из данной ситуации я вижу пока только один выход, это сортировать начальный рекордсет, до наложения на него фильтра, но это тоже очень накладно (как сказал уже выше 50000 реестра объектов это не мало) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 13:20:57 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
отсойдененный ркордсет - может стоит найти ему замену? Например коллекцию или массив. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 13:44:50 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
marvan отсойдененный ркордсет - может стоит найти ему замену? Например коллекцию или массив. ага, а с формами как потом работать? мне не нужно другой метод, мне нужно открыть рекордсет с нужными мне данными сделав это с наименьшими затратами ресурсов вот и возникает вопрос: зачем микрософт сделала возможность открывать один рекордсет на основе другого, если этот механизм у них как я понял не отличается от механизма клонирования рекордсета? это ихняя ошибка, или тут нужно глубже копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 13:53:51 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
А нельзя так nrs.Open "select rs.BBB from rs where ..."? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2004, 04:34:03 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Andrey13А нельзя так nrs.Open "select rs.BBB from rs where ..."? причем тут это? читай внимательно заголовок темы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2004, 14:28:15 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
делаю вывод что нельзя так сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 15:15:19 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
ведь используя DAO я писал: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2004, 15:21:39 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 17:35:39 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Mik Prokoshin Читайте первоисточники первоисточники не говорят о том как решить мою проблему то что фильтры в ADO и DAO работают поразному, это я и без первоисточников знаю, а вот в очередной раз говорю, что если одновременно попробовать сначала отфильтровать, а потом отсортировать отфильтрованное то фильтр отваливается, возникает вопрос кто виноват... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 11:57:37 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
MS говорит прямо, что получить рекордсет на базе отфильтрованного невозможно. Значит, надо либо делать в отсоединенном рекордсете Index (а потом Sort и Filter), это ускорит работу с полным рекордсетом, либо, как сказал АлексейК, использовать WHERE с фильтрующими значениями ключевого поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 16:47:17 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Индексы там есть, а WHERE мне не подходит, по причине того что вопрос как раз и заключается в том чтобы фильтровать данные без перезапроса к базе данных (отсоединенный рекордсет используется) В общем козлы одни в этом микрософте, самые нужные вещи не реализовывают, а мы потом удевляемся куда машинные ресурсы уходят, а вот на такую вот фигню и уходят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 16:59:51 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Ну, если такая нужда - делай просто врукопашную еще один disconnected sorted recordset, куда и копируй (удаляй) нужные (отфильтрованные) записи. Ручками работы, конечно, побольше. Если этот фильтрованный рекордсет будет по объему большой, то может проще первый вызов делать все же с WHERE непосредственно из базы - это опытным путем надо смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 17:28:47 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Mik ProkoshinНу, если такая нужда - делай просто врукопашную еще один disconnected sorted recordset, куда и копируй (удаляй) нужные (отфильтрованные) записи. Ручками работы, конечно, побольше. Если этот фильтрованный рекордсет будет по объему большой, то может проще первый вызов делать все же с WHERE непосредственно из базы - это опытным путем надо смотреть. Спасибо за совет, ну это все и так понятно, просто хотелось обойтись малой кровью, ан нет, у микрософта мало крови не бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 17:30:52 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
Lenivec можно попробовать так: Код: plaintext 1. 2. 3. 4. по крайней мере обещают сохранить данные с учетом фильтра авторIf the Filter property is in effect for the Recordset, then only the rows accessible under the filter are saved ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 15:01:16 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
2 HandKot обещать то они обещают, а вот выполнять не выполняют :) уроды да и извращенный это метод какойто... ну да ладно, все равно сохраняет без учета фильтра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 15:12:06 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
2 Lenivec не знаю как у тебя у меня все нормально сохраняет с учетом фильтра (токо что специально проверил) ЗЫЖ вместо файла можно использовать и поток (STREAM) должно быстрее получится и не надо парится о именах файла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 15:17:54 |
|
||
|
ADO Как открыть один рекордсет на основе другого
|
|||
|---|---|---|---|
|
#18+
HandKot2 Lenivec не знаю как у тебя у меня все нормально сохраняет с учетом фильтра (токо что специально проверил) если в качестве фильтра задана строка, до да все нормально, а вот если в качестве фильтра задан массив букмаков, то нифига не работает, сохраняет без учета фильтра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 16:46:49 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32851903&tid=2168378]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 316ms |

| 0 / 0 |
