|
|
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Приветствую, Есть ли в pFibDataset штатное средство, чтобы скинуть буфер на диск, какого бы размера он там ни был, и потом отображать его без существенных затрат памяти, в гриде, например? Да еще и отцепившись от базы в дальнейшем. Есть возможность скинуть содержимое на диск, но вот пользоваться этим как, кроме как обратно целиком закачать с тем же самым расходом памяти... Писать свой датасет, который читает из этого файла, только, или есть что-то штатное в FibPlus, а я в упор не вижу этого? Есть CacheModelOptions, который при выполнении определенных условий вживую будет лазить в базу за данными, храня в памяти ограниченное кол-во записей, и вроде замечательно выглядит, но не всё гладко там, например с recno, может, еще что-то какие глюки полезут... Да и от базы отцепиться хотелось бы. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 02:45 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Тест на эрудицию, или просто лень смотреть документацию и исходники? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 12:15 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Смотрел, туплю. Подскажите, если не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 12:17 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov, есть кое-что, но годных штатных средств именно в форме объявленных хотелок - нет. Можно воспользоваться средствами компонентов отображения: гриды EhLib, DevEx. У первого - механизм "драйверов", у второго - наследник TcxCustomDataSet. И тот и другой просты в понимании и реализации. Можно также TVirtualStringTree, но с ним гемора куда больше, чем у двух названных выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 13:47 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Лучше подробнее сформулировать задачу. Потому что "скинуть датасет на диск" и "для экономии памяти" - это разные задачи (и для разных целей, обычно). MemoryDataset-ы можно использовать, например? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 17:11 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам MemoryDataset-ы можно использовать, например? Для экономии памяти... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 17:16 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
ъъъъъ> Для экономии памяти... :) Их можно сбрасывать на диск и загружать кусками. :) Фибы (старых версий, на счёт новых ХЗ) так не умеют. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 17:20 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, да ну, хрень какая-то. Не знаю что, не знаю зачем. Что за задача - "в гриде без существенных затрат памяти"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 17:31 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, Запрос в tpFibdataset выполняется для расчета сумм, то есть придется отфетчить все записи, и для отображения результата запроса в гриде в приложении. В стандартном варианте tpFibDataset загрузит все считанные с сервера данные в оперативную память, а память у нас ограниченная, особенно, если приложение 32 разрядное. То есть, если памяти не хватит - получаем Out of memory. Значит, мы либо сбрасываем считанные результаты в кэш на диск, с которого и показываем результаты запроса юзеру, в гриде, например, как это делает BDE, и мы даже и не паримся, сколько там сожрало приложение памяти оперативной и не получит ли оно Out of memory. Второе решение - выставить pfibdataset.cachemodeloptions.cachemodelkind в cmkLimitedBufferSize, и тогда pfibdataset будет подкачивать отображаемые данные по мере их надобности: надо в last выставить - скачает последние записи, покажет, а надо в First - скачает первые, покажет, а надо пробежать от first до last, то будет выкачивать новые по мере прохождения по датасету, а старые выгружать из памяти, а когда к ним обращаемся снова - скачивать их снова с сервера. Во втором решении, вроде, всё прекрасно, но после выполнения запроса мы остаемся во взаимодействии с сервером. Хотелось бы скачать все данные запроса целиком, пусть в кэш на диске, потом отцепиться от сервера, и разглядывай их сколько хочешь в своем гриде, сколько бы их там не было тыщ строк. Штатного средства в FibPlus для этого нет, похоже? Или не нахожу просто? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 17:51 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov а память у нас ограниченная, особенно, если приложение 32 разрядное Оффтоп: а есть версия FIB+ для 64-бита? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:01 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Люди писали здесь, на форуме, что FibPlus не работает в 64 разрядных приложениях. То ли это означало, что и не откомпилится, то ли это означало, что будет работать некорректно, и надо допиливать - не знаю. У меня, к сожалению, Delphi XE. А так - да: возможности в использовании оперативки расширяются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:08 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:11 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Хмм, интересно, спасибо. Что-то я проглядел этот топик и приуныл. Правда, у меня всё равно XE, а на последний Delphi перейти доходы с бизнеса не позволяют, но это вот уже и правда оффтоп :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:14 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov Запрос в tpFibdataset выполняется для расчета сумм, то есть придется отфетчить все записи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:26 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, Для расчета сумм надо смотаться до конца один раз. Потом надо отобразить в гриде в приложении и, кстати, вернуться на первую запись. При cmkLimitedBufferSize, кстати, датасет призадумается, так как пойдет фетч уже первых записей, которые он давно выгрузил из памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:30 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий V.Borzov Запрос в tpFibdataset выполняется для расчета сумм, то есть придется отфетчить все записи Мне кажется, человек хочет в модном гриде показывать итоговую строку с суммами. А иначе непонятно, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:32 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov Мимопроходящий, Для расчета сумм надо смотаться до конца один раз. Потом надо отобразить в гриде в приложении и, кстати, вернуться на первую запись. При cmkLimitedBufferSize, кстати, датасет призадумается, так как пойдет фетч уже первых записей, которые он давно выгрузил из памяти. А можно чуть подробнее про задачу, в которой надо сумму ста миллионов записей показывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:33 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov Для расчета сумм надо смотаться до конца один раз. V.Borzov Потом надо отобразить в гриде в приложении и, кстати, вернуться на первую запись КОМУ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:35 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
ъъъъъ, Да просто тупо "журнал продаж", например. Полей много, максимально подробно выведена каждая строка. Вот делаем запрос, видим результат. Вот увеличиваем диапазон дат - out of memory. Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:36 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov, а были уже случаи, когда памяти не хватало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:36 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov ъъъъъ, Да просто тупо "журнал продаж", например. Полей много, максимально подробно выведена каждая строка. Вот делаем запрос, видим результат. Вот увеличиваем диапазон дат - out of memory. Всё. "Журнал продаж" в генераторах отчетов формируют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:37 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov> Да просто тупо "журнал продаж", например Это отчёт или футер в гриде? > Вот увеличиваем диапазон дат - out of memory. Всё. На каком количестве записей? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:41 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 100500 записей показать? КОМУ?! Юзер знает, что есть журнал продаж, там сумма итого. Листать ему и не надо, может. Дает диапазон хрен знает какой и пытается вывести отчет. При больших диапазонах программа не справляется. Тут мы либо ограничиваем возможности этого отчета, запрещая юзеру выводить больше чем вот столько-то данных, чего хотелось бы избежать, либо исходим из того, что приложение может вывести всё, что захочет клиент, за счет оперативной памяти, за счет дискового пространства, или, в конце концов, за счет постоянных обращений к серверу. Но должно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:41 |
|
||
|
pFibDataset - скинуть буфер на диск для экономии памяти
|
|||
|---|---|---|---|
|
#18+
V.Borzov Мимопроходящий 100500 записей показать? КОМУ?! Юзер знает, что есть журнал продаж, там сумма итого. Листать ему и не надо, может. Дает диапазон хрен знает какой и пытается вывести отчет. При больших диапазонах программа не справляется. Тут мы либо ограничиваем возможности этого отчета, запрещая юзеру выводить больше чем вот столько-то данных, чего хотелось бы избежать, либо исходим из того, что приложение может вывести всё, что захочет клиент, за счет оперативной памяти, за счет дискового пространства, или, в конце концов, за счет постоянных обращений к серверу. Но должно работать. Понятно. Ставишь галку Unidirectional в True, в TpFIBDataSet, и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 18:44 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=46&tid=2038369]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 323ms |

| 0 / 0 |
