Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
Crazy_Wolf
Member

Откуда:
Сообщений: 63
Приветствую, All
Есть такая задача. Имеется выборка по редактировании строки в таблице (назовем это журналированием). Все работает за исключением одного неудобства. В таблице куча столбцов, и хотелось бы показывать пользователю только те столбцы, где есть изменения.
Есть ли какие простые и быстрые методы пробежаться по гриду и выделить те столбцы где есть различия, остальные скрыть в гриде
пока две идеи
1. Бегать циклами по самому дата сету
2. Выгрузить датасет в массив, бегать по нему и по номерам столбцов массива где будут различия показывать / скрывать колонки грида
7 ноя 19, 15:13    [22011604]     Ответить | Цитировать Сообщить модератору
 Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26154
DISTINCT (UNIQUE)?
7 ноя 19, 15:59    [22011653]     Ответить | Цитировать Сообщить модератору
 Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
Crazy_Wolf,

3. Выбирать из БД только нужные записи
7 ноя 19, 16:17    [22011663]     Ответить | Цитировать Сообщить модератору
 Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30608

07.11.2019 16:17, _Vasilisk_ пишет:
> 3. Выбирать из БД только нужные записи

не взлетит.
тут программист нужен.

Posted via ActualForum NNTP Server 1.5

7 ноя 19, 17:01    [22011690]     Ответить | Цитировать Сообщить модератору
 Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
Мимопроходящий
тут программист нужен.
4. Нанять программиста
7 ноя 19, 17:06    [22011696]     Ответить | Цитировать Сообщить модератору
 Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6571
Crazy_Wolf,

  • я вас правильно понял, у вас есть 2 таблицы, первую редактируют, а во второй "для журналирования" отмечаются какие именно столбцы? Так?

  • или для каждого столбца в той же таблице есть столбец-клон, в котором хранится "старое" значение?

    Сообщение было отредактировано: 8 ноя 19, 01:37
  • 8 ноя 19, 01:35    [22011991]     Ответить | Цитировать Сообщить модератору
     Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
    Crazy_Wolf
    Member

    Откуда:
    Сообщений: 63
    Кроик Семён,
    да, второй вариант.
    данные уже получены (с этим нет проблем), просто проглядывать таблицу в 30 столбцов, если в ней менялось (пускай 5 раз) одно и тоже поле неудобно. Хотелось бы просто в гриде скрыть столбцы, которые не менялись.
    8 ноя 19, 06:29    [22012015]     Ответить | Цитировать Сообщить модератору
     Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
    Василий 2
    Member

    Откуда:
    Сообщений: 802
    По идее этот механизм уже имеется хотя бы для обеспечения CachedUpdates. Но реализация может находиться не в родительском классе, а отдаваться потомкам
    8 ноя 19, 10:35    [22012143]     Ответить | Цитировать Сообщить модератору
     Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
    Кроик Семён
    Member

    Откуда: СПб --> Dortmund
    Сообщений: 6571
    Crazy_Wolf,


    я бы так поступил: пробежался бы по датасету и определял бы для всех пар полей (оригинал+клон) для каждой записи датасета, есть ли изменение. Если нет измемений во всех строках, можно оба поля сделать невидимыми. Причем от вашей задачи зависит, делаете ли вы Dataset.FieldByName('XYZ_FIELD').Visible:=false или GridColumnXYZ.Visible:=false.

    Для того, чтобы было быстрее и не раздражало пользователя, можно применить DisableControls/EnableControls.

    var
       DS    : TDataSet;
    begin
       DS.DisableControls();
       try
          DS.First();
          while not DS.Eof do
          begin
             ... здесь проверяем поля ...
    
    
             DS.Next();
          end;
    
          DS.First();
       finally
          DS.EnableControls();
       end;
    
    8 ноя 19, 13:35    [22012305]     Ответить | Цитировать Сообщить модератору
     Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
    Кроик Семён
    Member

    Откуда: СПб --> Dortmund
    Сообщений: 6571
    P.S.
    Кстати, гриды позволяют расцвечивать ячейки. Не все же ячейки какого-то столбца грида менялись, даже если он видим. Может только в одной строчке из 100 изменилось. Вот эту ячейку хорошо бы как-нибудь выделить цветом.
    8 ноя 19, 13:38    [22012312]     Ответить | Цитировать Сообщить модератору
     Re: DatsSet: как узнать одинаковые ли значения в строках одного столбца  [new]
    DimaBr
    Member

    Откуда:
    Сообщений: 11332
    Скрыть столбцы, которые не менялись ?
    А как же их поменять, если они скрыты и для пользователя нет к ним доступа ?
    8 ноя 19, 13:39    [22012313]     Ответить | Цитировать Сообщить модератору
    Все форумы / Delphi Ответить