powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вывод больших отчетов
12 сообщений из 12, страница 1 из 1
Вывод больших отчетов
    #32183533
k2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
k2
Гость
Проблема такая,
есть база данных (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 если использовать связанные таблицы,
когда передаются из сервера не все данные, а часть, которую требуется отобразить на экране в данный момент, а последующая подкачивается при прокрутке

Может кто имел опыт подобных задач, поделитесь советом пжл

Только возражения что, зачем закачивать сразу столько данных в грид,
ведь юзер их не сможет обработать одновременно - не принимаются


Заранее спасибо
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32183565
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может тогда подойдет вариант с постраничным выводом. Способов реализации этого на сиквеле на главном форуме было много, один даже в факе есть.
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32183595
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо идти на поводу заказчика.

Для начала я бы поинтересовался, кто будет смотреть этот отчет? 1600 страниц - это не шутка. Скорее всего, полностью смотреть его НИКТО НИКОГДА не будет. Скорее всего достаточно будет промежуточных итогов по какой-то группировке, может быть многоуровневой и возможности детального просмотра какой-то подгруппы.
Если уж отбрыкаться не удастся, то можно разбить отчет на сотню маленьких, по какой-то группировке, и сводный отчет.
Если и этот вариант не пройдет, то можно сделать на сервере Job, который бы ночью делал этот отчет, зиповал и куда-нить складывал.
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32183773
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
А нельзя в другой формат нужные данные слить средствами сервера?
Например, в DBF. Затем качнуть файлы на клиента и работать с ними локально.
Лажа, конечно, но ведь отчеты на 100000 записей не каждый день делаются.
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32183797
Dikobrazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Экселе, по-моему, всего лишь 64К строк.
Разве что использовать обычный StringGrid и заполнять его данными программно по мере необходимости.
Или можно использовать RxMemoryData из RxLib в качестве промежуточного хранилища данных.
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32183839
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
изврат это - разом сотню тысяч юзеру давать ...
тут от сотни глаза уже в кучу у него а умноженное на тысячу - вааще ничего не увидит ...
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32183979
Serge_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... (>100000 записей) ...
Вообще то многовато, но бывает. Но все сразу, естественно никто не будет (не сможет) смотреть, а посему нужно порционально выводить. Пусть листает пока не надоест. Да и ждать на клиенте пока все подгрузится долго. Excel тоже не выход, лучше в HTML если править не надо.

Пытался использовать серверный курсор, но оказалось, что поддерживается только OpenForwardOnly курсор на стороне сервера
А на сервере другой и не нужен. Двунаправленный курсор достигается за счет кеширования уже вычитаных строк - а это память. Задача сервера собрать данные, а не взад-вперед ходить.

Такая штука как-то реализована к примеру в SQL Explorer
SQL Explorer использует БДЕ, а оно именно кеширует. Вот DB Express не кеширует и имеет однонаправленный курсор.


Короче, лучше через Web. Пусть сервер вычитывает и формирует HTML. Браузер начнет показывать таблицу еще до того, как все вычитает - можно начинать смотреть, а остальное в процессе подкачается. Потом можно сохранить в файл и открыть в Word, Excel.
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32186939
k2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
k2
Гость
Спасибо всем ответившим.

Сделал примерно так.
Большая часть данных которая обычно не меняется в течении текущего дня копируется ночью на более быстрый сервер (MSSQL), остальная онлайновая,
которая гораздо меньше берется с основного сервера.

и вообщем таким объедененным запросом выводится все это дело в грид к клиенту.
скорость получается средняя но более менее терпимо.

Excel действительно не может принять более 64K строк, сразу вылетает.
Web не подошел по причине того , что требовался поиск по данным в определенной колонке и несколько других еще более мелких фичей,
что и пришлось реализовывать в своем гриде (на основе DeveloperExpress грида) .

Но всетаки как то не очень доволен получившимся решением,

наверное еще покапаю в направлении постраничного вывода и кэшированием как в BDE
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32186942
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-хо-хо... Ну сколько раз уже говорилось, что НЕ НАДО давать юзерам стотысячные гриды. Вы говорите, что надо по столбикам что-то искать? Так создайте навороченную систему поиска-отбора. С удобным выбором вариантов и масок, указанием желательной сортировки. Позаботтесь о тех, кто будет с прогой работать, а не о тех, кто ставит задачу. Ну не бывает, что юзеру нужно было даже 1000 строк! Дайте ему пять строчек, но именно тех, которые он хочет видеть!
Хотя бы в порядке эксперимента. Дайте юзеру возможность выбирать, чем пользоваться, Вашей "китайской стеной" или поисковой формочкой. Да обучите его этой формочкой правильно пользоваться. О Вашем гриде никто и не вспомнит!
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32187006
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правду говориш брат Cat2. Да только не всегда это правда :-)
есть у меня одна пользовательша, знаток ексела. Так если по ее желанию, ей никакой программы не нужно, она все в экселе сделает сама :-)
и поиск средин нескольких тысяч строк дла нее не проблема :-)

ну ниче, переучиваю ее помаленьку
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32187831
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_k. Таких пользовательшей надо давить интелектом. И прежде всего, сообщить им, что в екселе весго 65536 строк. А после этого дать им сводный отчет в их любимом екселе.
...
Рейтинг: 0 / 0
Вывод больших отчетов
    #32187851
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и удобством тоже давить надо :-)
ежели удобно хуй отвертится :-)
ща вот думаю над универсальным(ну почти) классом который бы формочку для условий выдавал и применял к гриду...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вывод больших отчетов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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