-
Zheksonz (28.05.15 09:05) [0]Добрый день.
Отображаю содержимое DataSet_a при помощи компонента DBGridEh. Возникла необходимость сортировки по дате, которая содержится в одном из полей базы данных. Подскажите плз. как организовать сортировку.
Сделал так:DBGridEh1.Columns[1].Title.TitleButton = true;DBGridEh1.Columns[1].Title.SortIndex = 1;DbGridEh1.OptionsEh.dghAutoSortMarking = true;DbGridEh1.SortLocal:= True;
добавилUses EhLibADO
при этом заголовок работает как кнопка, появляются стрелочки сортировки, но в таблице никаких изменений((( Почему? -
кгшзх © (28.05.15 09:21) [1]procedure TSQLDatasetFeaturesEh.ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean);
begin
if Sender is TCustomDBGridEh then
if TCustomDBGridEh(Sender).SortLocal then
raise Exception.Create(Format ('TSQLDatasetFeaturesEh can not sort data ' +
'in dataset "%s" in local mode', [DataSet.Name]))
else
ApplySortingForSQLBasedDataSet(TCustomDBGridEh(Sender), DataSet,
SortUsingFieldName, IsReopen, SQLPropName);
end; -
Zheksonz (28.05.15 09:58) [2]ВключилUses
EhLibBDE;
При сортировке стала появляться ошибка:
> TSQLDatasetFeaturesEh can not sort data in dataset "Tours" in local mode
А что это за
> local mode
такой? -
Zheksonz (28.05.15 09:59) [3]Или мне вместо TTable нужно использовать TQuery ?
-
Zheksonz (28.05.15 10:02) [4]
> кгшзх © (28.05.15 09:21) [1]
Кстати в этой процедуре и выскакивает ошибка! -
Zheksonz (28.05.15 10:08) [5]сделалDbGridEh1.SortLocal:= false;
теперь выскакивает ошибка
> TTable is not SQL based dataset.
Т.е. всё-таки TQuery нужно использовать? -
кгшзх © (28.05.15 10:10) [6]А что это за
> local mode
DbGridEh1.SortLocal:= True; -
Плохиш © (28.05.15 14:20) [7]
> Zheksonz (28.05.15 10:08) [5]
> сделал DbGridEh1.SortLocal:= false;
>
> теперь выскакивает ошибка
> > TTable is not SQL based dataset.
>
Ну не может он "order by" к ttable добавить.
> Т.е. всё-таки TQuery нужно использовать?
tdataset -
кгшзх © (28.05.15 14:44) [8]tdataset
Использовать надо то, что есть внутри наследников TSQLDatasetFeaturesEh
Все они регистрируются через RegisterDatasetFeaturesEh внутри модулей типа EhLibADO, EhLibBDE -
Zheksonz (28.05.15 18:35) [9]В общем при помощи TQuery сделал сортировку и навигацию по таблицам, но вот отображения изменений нет(((
В смысле внёс изменения в значения полей таблицы, сохранил их, сделалDataModule2.Query1.Refresh;
но DBGridEh их не отображает((DBGridEh.Refresh
тоже не помогло.
СтавилAutorefresh := true;
эффект тот же(( Почему не отображаются изменения? -
Zheksonz (28.05.15 18:48) [10]при этом после перезагрузки программы изменения начинают отображаться... т.е. какое-то обновление я упустил((
-
кгшзх © (28.05.15 20:05) [11]какое-то обновление
это ты напоролся на легендарный глюк/фичу парадокса+бде который настолько древний, что мало кто из старожилов про него помнит.
сбрасывай кеш на диск. -
Zheksonz (28.05.15 20:07) [12]FlushBuffers
делаю... не это не помогает(( -
Zheksonz (28.05.15 20:31) [13]В общем ничего лучше не придумал пока, кроме как закрыть, а потом открыть Query в обработчике AfterPost таблицы, в которую вношу изменения...
-
Денис Комаров © (28.05.15 22:37) [14]Вот 99% тебе грид как есть не нужен...
-
Дмитрий (19.06.15 13:40) [15]Для сортировки по нажатию на стрелочки вставляю столбцы в текст запроса.