Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
Проблема такая, есть база данных (AS/400) коннект через ODBC->ADO (причем довольно медленный), необходимо вывести некоторые данные в грид. При небольших количествах данных вполне подходил Excel. Но столкнулся с ситуацией когда требуется выводить большое количество данных (>100000 записей) если же их также пытаться засунуть в excel, то это очень и очень на долго особенно при таком фиговом коннекте. Пытался использовать серверный курсор, но оказалось, что поддерживается только OpenForwardOnly курсор на стороне сервера, вообщем связать это с гридом не получается вылетает с ошибкой ''Dataset does not support bookmarks, which are required for multi-record data controls'', что и следовало ожидать. Такая штука как-то реализована к примеру в SQL Explorer (идет вместе с Delphi),а также в Access если использовать связанные таблицы, когда передаются из сервера не все данные, а часть, которую требуется отобразить на экране в данный момент, а последующая подкачивается при прокрутке Может кто имел опыт подобных задач, поделитесь советом пжл Только возражения что, зачем закачивать сразу столько данных в грид, ведь юзер их не сможет обработать одновременно - не принимаются Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 17:46 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
Может тогда подойдет вариант с постраничным выводом. Способов реализации этого на сиквеле на главном форуме было много, один даже в факе есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 18:12 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
Не надо идти на поводу заказчика. Для начала я бы поинтересовался, кто будет смотреть этот отчет? 1600 страниц - это не шутка. Скорее всего, полностью смотреть его НИКТО НИКОГДА не будет. Скорее всего достаточно будет промежуточных итогов по какой-то группировке, может быть многоуровневой и возможности детального просмотра какой-то подгруппы. Если уж отбрыкаться не удастся, то можно разбить отчет на сотню маленьких, по какой-то группировке, и сводный отчет. Если и этот вариант не пройдет, то можно сделать на сервере Job, который бы ночью делал этот отчет, зиповал и куда-нить складывал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2003, 18:49 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
А нельзя в другой формат нужные данные слить средствами сервера? Например, в DBF. Затем качнуть файлы на клиента и работать с ними локально. Лажа, конечно, но ведь отчеты на 100000 записей не каждый день делаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2003, 08:11 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
В Экселе, по-моему, всего лишь 64К строк. Разве что использовать обычный StringGrid и заполнять его данными программно по мере необходимости. Или можно использовать RxMemoryData из RxLib в качестве промежуточного хранилища данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2003, 09:13 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
изврат это - разом сотню тысяч юзеру давать ... тут от сотни глаза уже в кучу у него а умноженное на тысячу - вааще ничего не увидит ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2003, 09:57 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
... (>100000 записей) ... Вообще то многовато, но бывает. Но все сразу, естественно никто не будет (не сможет) смотреть, а посему нужно порционально выводить. Пусть листает пока не надоест. Да и ждать на клиенте пока все подгрузится долго. Excel тоже не выход, лучше в HTML если править не надо. Пытался использовать серверный курсор, но оказалось, что поддерживается только OpenForwardOnly курсор на стороне сервера А на сервере другой и не нужен. Двунаправленный курсор достигается за счет кеширования уже вычитаных строк - а это память. Задача сервера собрать данные, а не взад-вперед ходить. Такая штука как-то реализована к примеру в SQL Explorer SQL Explorer использует БДЕ, а оно именно кеширует. Вот DB Express не кеширует и имеет однонаправленный курсор. Короче, лучше через Web. Пусть сервер вычитывает и формирует HTML. Браузер начнет показывать таблицу еще до того, как все вычитает - можно начинать смотреть, а остальное в процессе подкачается. Потом можно сохранить в файл и открыть в Word, Excel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2003, 11:29 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
Спасибо всем ответившим. Сделал примерно так. Большая часть данных которая обычно не меняется в течении текущего дня копируется ночью на более быстрый сервер (MSSQL), остальная онлайновая, которая гораздо меньше берется с основного сервера. и вообщем таким объедененным запросом выводится все это дело в грид к клиенту. скорость получается средняя но более менее терпимо. Excel действительно не может принять более 64K строк, сразу вылетает. Web не подошел по причине того , что требовался поиск по данным в определенной колонке и несколько других еще более мелких фичей, что и пришлось реализовывать в своем гриде (на основе DeveloperExpress грида) . Но всетаки как то не очень доволен получившимся решением, наверное еще покапаю в направлении постраничного вывода и кэшированием как в BDE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 22:26 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
О-хо-хо... Ну сколько раз уже говорилось, что НЕ НАДО давать юзерам стотысячные гриды. Вы говорите, что надо по столбикам что-то искать? Так создайте навороченную систему поиска-отбора. С удобным выбором вариантов и масок, указанием желательной сортировки. Позаботтесь о тех, кто будет с прогой работать, а не о тех, кто ставит задачу. Ну не бывает, что юзеру нужно было даже 1000 строк! Дайте ему пять строчек, но именно тех, которые он хочет видеть! Хотя бы в порядке эксперимента. Дайте юзеру возможность выбирать, чем пользоваться, Вашей "китайской стеной" или поисковой формочкой. Да обучите его этой формочкой правильно пользоваться. О Вашем гриде никто и не вспомнит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2003, 23:00 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
Правду говориш брат Cat2. Да только не всегда это правда :-) есть у меня одна пользовательша, знаток ексела. Так если по ее желанию, ей никакой программы не нужно, она все в экселе сделает сама :-) и поиск средин нескольких тысяч строк дла нее не проблема :-) ну ниче, переучиваю ее помаленьку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 08:13 |
|
||
|
Вывод больших отчетов
|
|||
|---|---|---|---|
|
#18+
alex_k. Таких пользовательшей надо давить интелектом. И прежде всего, сообщить им, что в екселе весго 65536 строк. А после этого дать им сводный отчет в их любимом екселе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2003, 20:51 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32186939&tid=2117940]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 389ms |

| 0 / 0 |
