Diesel Pascal
Модератор: Модераторы
Привет Rik подскажи пожалуйста как работает или что дает свойство TIBDataSet.ForcedRefresh ... меня интересует как в DBGrid вывести последние добавленные записи или изменения записей произведенные на другом компе ... не обновляя полностью запрос и коннект к базе ... чтобы пользователь без лишних действий увидел новые записи
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
ogorodov писал(а):Привет Rik подскажи пожалуйста как работает или что дает свойство TIBDataSet.ForcedRefresh ... меня интересует как в DBGrid вывести последние добавленные записи или изменения записей произведенные на другом компе ... не обновляя полностью запрос и коннект к базе ... чтобы пользователь без лишних действий увидел новые записи
ForcedRefresh - принудительный Refresh текущей записи после Post.
Если весь набор обновить нужно, только FullRefresh вызывать, больше никак. Чтобы во время FullRefresh позиция курсора не сбивалась, в GeneratorField.Field впишите имя поля первичного ключа.
Попробовал вот так ...
... Курсор после этого встает на середину DBGrid ... А как обновить не весь набор данных а только видимый набор плюс новые записи
Код: Выделить всё
ibdsOrder.GeneratorField.Field:='ID';
ibdsOrder.FullRefresh;... Курсор после этого встает на середину DBGrid ... А как обновить не весь набор данных а только видимый набор плюс новые записи
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
ogorodov писал(а):Попробовал вот так ...
... Курсор после этого встает на середину DBGrid ... А как обновить не весь набор данных а только видимый набор плюс новые записи
Я могу добавить процедуру RefreshVisibleRows
Вернее у себя я её уже добавил, процедура перебирает все записи локального кэша, вычитывая данные во временный буфер по одной, затем из временного буфера устанавливает параметры в RefreshSQL и с помощью него обновляет данные во временном буфере, после чего отправляет содержимое буфера обратно в локальный кэш. Все курсоры естественно остаются на месте, но если в локально кэше вычитано записей много, на обновление их всех потребуется время. Я попробовал на 1000 записей, на глаз примерно занимает около 1 сек или чуть больше. Если такой вариант устроит, выложу обновление, во всяком случае по другому сделать идей нет...
*Rik* писал(а):Если такой вариант устроит, выложу обновление, во всяком случае по другому сделать идей нет...
Ага очень хорошо ... выложи пожалуйста с процедурой RefreshVisibleRows ...
Добавлено спустя 21 минуту 49 секунд:
*Rik* Сегодня попробовал ... самое оно спасибо
При открытии сохраненного или запуске нового проекта, содержащего компонент TSdfDataSet, выдается ошибка:
Можно, конечно, и вручную CSV парсить, но с DataSet удобнее.
Class "TSdfDataSet" not found.
Можно, конечно, и вручную CSV парсить, но с DataSet удобнее.
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
v-t-l писал(а):При открытии сохраненного или запуске нового проекта, содержащего компонент TSdfDataSet, выдается ошибка:Class "TSdfDataSet" not found.
Можно, конечно, и вручную CSV парсить, но с DataSet удобнее.
Потребуется какое-то время, как будет готово, отпишусь..
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
Проект и компоненты переведены на Lazarus 1.4
Исправлена поддержка TSDFDataSet, TFieldDefs
Пример с TSdfDataSet (сделано на основе примера с http://wiki.freepascal.org/CSV)
http://visual-t.ru/files/SdfDataTest.lm9
Ссылку на пример можно скопировать и в дизайнере выполнить Файл->Открыть URL (Загруженные проекты по http,ftp в дизайнере будут только для чтения, для редактирования сохраните проект локально)
Исправлена поддержка TSDFDataSet, TFieldDefs
Пример с TSdfDataSet (сделано на основе примера с http://wiki.freepascal.org/CSV)
http://visual-t.ru/files/SdfDataTest.lm9
Ссылку на пример можно скопировать и в дизайнере выполнить Файл->Открыть URL (Загруженные проекты по http,ftp в дизайнере будут только для чтения, для редактирования сохраните проект локально)
Привет *Rik*
Подскажи существует ли компонента типа LR_ZeosDB или LR_SqlDB от Lagunov A.A. для IBX ... для использования в LazReport
Подскажи существует ли компонента типа LR_ZeosDB или LR_SqlDB от Lagunov A.A. для IBX ... для использования в LazReport
Привет *Rik*
Я на днях Lazarus обновил до версии 1.4 и попробовал IBX в своих консольных утилитах ... так вот опять выдает ошибку и не собирается без модуля Intefase.
В версии 1.2.6 все работало на ура ... что поменяли непонятно пока ... У тебя так-же попробуй.
Я на днях Lazarus обновил до версии 1.4 и попробовал IBX в своих консольных утилитах ... так вот опять выдает ошибку и не собирается без модуля Intefase.
В версии 1.2.6 все работало на ура ... что поменяли непонятно пока ... У тебя так-же попробуй.
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
ogorodov писал(а):Привет *Rik*
Я на днях Lazarus обновил до версии 1.4 и попробовал IBX в своих консольных утилитах ... так вот опять выдает ошибку и не собирается без модуля Intefase.
В версии 1.2.6 все работало на ура ... что поменяли непонятно пока ... У тебя так-же попробуй.
Тут Lazarus скорее не виноват. Я как-то заменил функции типа UppdrCase на UTF8UpperCase и т.д. объявленные в LazUTF8 (Это была попытка по чьей-то просьбе подключить русские алиасы), в модуле IBIntf.pas где загружается клиентская либа от FireBird прописан UTF8ToSys из модуля FileUtil, они тянут за собой LCL, я как-то упустил этот момент из виду.. Надо подумать, как чего придумаю, напишу, можете сами поэкспериментировать. Для этого в пакете IBExpress из зависимостей удалить LCL, в модуле IBDef.inc {$DEFINE LCLSUPPORT} тоже закомментировать. Как удастся IBExpress собрать без LCL так всё заработает..
Добавлено спустя 2 часа 28 минут 40 секунд:
ogorodov
Попробуйте вот это:
http://visual-t.ru/files/ibx_nolcl.7z
При установке пакета dclibx будет ругаться, что пути дублируются к одинаковым модулям, сделайте игнорировать, там сейчас разделены папки вывода модулей для пакета ibexpress и для dclibx. Для ibexpress отключен LCL и соответственно функции LalUTF8, поэтому в SQL запросах не используйте кириллицу даже в комментариях, для запросов EXECUTE BLOCK, а так-же в TIBDataSet.SelectSQL если используете свойство TIBDataSet.OrderFields.
Если все пройдет успешно, включу изменения для IBX, но видимо придется делать манипуляции и каждый раз пересобирать IBX, если требуется консольный вариант без LCL и для приложений с LCL.
Привет *Rik* ... вариант ibx_nolcl.7z все работает ... Спасибо
Великий немецкий инженер Рудольф Дизель, изобретатель дизельного двигателя! Прикольное название, инженер конструктор и математик Паскаль! 
- *Rik*
- постоялец
- Сообщения: 453
- Зарегистрирован: 19.04.2011 12:18:51
- Откуда: Урал
- Контактная информация:
McLion писал(а):Великий немецкий инженер Рудольф Дизель, изобретатель дизельного двигателя! Прикольное название, инженер конструктор и математик Паскаль!
Все верно, когда звучит фамилия инженера, на ум сразу приходит его изобретение - двигатель. В моем случае, продукт - это то-же движок, только программный, может не очень быстрый, но не менее мощный чем сам Lazarus и его приложения.
