Подскажаите, а как быть с сотрировкой???
Подскажаите, а как быть с сотрировкой???
В IBDataSet.SQL написано:
SELECT *
FROM Table1
ORDER BY FIELD3;
В таблице 3 записи, у который FIELD3=1,2,3 соответственно.
Меняю значения поля в 2-х записях местами, например 2 и 3, но записи не переупорядочиваются. В ADO+Gemini срузу менялись местами записи в Grid-е, а ч-з IBX как, неужели необходимо делать Close, Open???
SELECT *
FROM Table1
ORDER BY FIELD3;
В таблице 3 записи, у который FIELD3=1,2,3 соответственно.
Меняю значения поля в 2-х записях местами, например 2 и 3, но записи не переупорядочиваются. В ADO+Gemini срузу менялись местами записи в Grid-е, а ч-з IBX как, неужели необходимо делать Close, Open???
У меня связка IBDatabase1+IBDataSet1+IBTransaction1Tonal писал(а):Кто у тебя выполняет запрос?
Если сервер - нужно этот запрос ему переслать. Что и делает Open после Close.
А если не сервер - то нафига вообще с SQL-ем заморачиваться - сортируй на клиенте результат как тебе нужно.
получается, что сервер... Т.е. нужно считывать ID, затем close, open, затем locate на сохраненный ID ???
получается, что ты не понимаешь.получается, что сервер...
если ты выдаешь запрос с указанием сортировки в order by, то сортировкой занимается СЕРВЕР, а не клиент. Клиент всегда только принимает записи с сервера, и он вообще понятия не имеет, сортированы эти записи или нет, и по какому критерию.
Клиент может сам отсортировать принятый массив записей, т.е. собственный буфер. Но опять же, сортировка эта пойдет только в явно заданном на клиенте виде, который может не совпадать с тем, в каком порядке сервер прислал запрос.
это значит, что ADO целиком перевыполняло запрос. Другие объяснения тут вряд-ли могут быть. Я сомневаюсь, что в ADO есть парсер запроса, который поймет что в запросе был ORDER BY, и при вставке записи правильно пересортирует локальный буфер.В ADO+Gemini срузу менялись местами
Теперь понятно?
Решение есть ! Либо сортировать массив вручную, как советовал kdv, либо использовать библиотеку FIBPlus,
в которой все уже реализовано .
Теперь цитирую из справки:
в которой все уже реализовано .
Теперь цитирую из справки:
Кстати, в FIBPlus есть настройка, позволяющая сохранять позицию измененной записи в отсрортированном НД.TFIBCustomDataSet.DoSortEx: Sorts records without reopening a query on the server.