Конференция "Начинающим" » Сортировка DBGridEh [D7, Paradox]
 
  • 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]
    Для сортировки по нажатию на стрелочки вставляю столбцы в текст запроса.
 
Конференция "Начинающим" » Сортировка DBGridEh [D7, Paradox]
Есть новые Нет новых   [134427   +36][b:0][p:0.002]