powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнить значения в TRxDBGrid
7 сообщений из 7, страница 1 из 1
Сравнить значения в TRxDBGrid
    #39468467
LAYMEN717
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть таблица связанная с базой и графически представлена в DBGrid`е, и мне нужно сделать кнопку выделения строки и при этом чтоб было условие проверки с предыдущей строкой, по определенному полю.
В данном случае у меня поле по которому надо сделать проверку 'VREMJA' - дата представленая в виде AsDateTime.

авторНе знаю как написать условие проверки текущей выбраной строки с предыдущей и время выбраной строки должно быть больше чем предыдущей.
Это наверняка очень просто, если кому не сложно напишите условия или операторы которыми пользоваться ;(

Вот собственно сама процедура без условия:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TfmMain.N63Click(Sender: TObject);
begin
  if dmMain.ibdsRaspMrt.RecordCount>0 then
   begin
   if (grRaspMrt.SelectedField.FieldName='VREMJA') and ( само условие)  then
    begin
    SetLength(Par, 1);
    Par[0]:=dmMain.ibdsRaspMrtID.AsInteger;
    dmMain.SQLUpdate('UPDATE RASPMRT SET FIELD_CONC=''+'' WHERE ID=:ID', Par);
    dmMain.ibdsRaspMrt.Active:=false;
    dmMain.ibdsRaspMrt.Active:=true;
    dmMain.ibdsRaspMrt.Locate('ID',Par[0],[]);

  end
  end else Application.MessageBox('Отсутствует строка для редактирования','Ошибка',MB_ICONERROR);
end;
...
Рейтинг: 0 / 0
Сравнить значения в TRxDBGrid
    #39468491
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У грида есть Datasource, у которого есть Dataset, у которого есть процедуры DisableControls, Prior, Next и EnableControls.
...
Рейтинг: 0 / 0
Сравнить значения в TRxDBGrid
    #39468492
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что бы не дёргать датасет вверх/вниз предлагаю загрузить его в память (rxMemData кажется назывался), добавить поле для сравнения и переписать туда значение с предыдущей строки в цикле.
Код: pascal
1.
2.
3.
4.
5.
while not DS.Eof do begin
  V := DS['Field'];
  DS.Next;
  DS['OldValue'] := V;
end;


Или же вернуть в запросе дополнительную колонку с предыдущим значением или результатом сравнения
...
Рейтинг: 0 / 0
Сравнить значения в TRxDBGrid
    #39468506
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrИли же вернуть в запросе дополнительную колонку с предыдущим значением или результатом сравнения
Грубо говоря сама постановка задачи - кривая...
Данные иногда имеют свойство менять порядок выдачи, не считая наличия такой возможности у пользователя в гриде.
...
Рейтинг: 0 / 0
Сравнить значения в TRxDBGrid
    #39468587
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
var
  LDS: TDataSet;
  LFld: TField;
  LVal: TDateTime;
  LEqual: Boolean;
begin
  LDS := DBGrid.DataSource.DataSet;
  // Если датасет закрыт, пустой или стоим на первой записи, то выходим
  if not LDS.Active or LDS.IsEmpty or (LDS.RecNo = 1) then 
    Exit;
  LFld := LDS.FieldByName('VREMJA');  // А лучше поле назвать "TIME"
  LVal := LFld.AsDateTime;  // запоминаем текущее значение
  LDS.DisableControls;  // Блокируем перерисовку грида
  try
    LDS.Prior;  // Становимся на предыдущую запись
    LEqual := LVal = LFld.AsDateTime;  // Сравниваем два значения
    LDS.Next;  // Возвращаемся на исходную запись
    if LEqual then begin  // Если поля равны, то ...
      .......
    end;
  finally
    LDS.EnableControls;
  end;
end;
...
Рейтинг: 0 / 0
Сравнить значения в TRxDBGrid
    #39468961
LAYMEN717
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать nроверку не nовремени, а nодчеркнута ли строка nредыдущая или нет ?
...
Рейтинг: 0 / 0
Сравнить значения в TRxDBGrid
    #39468964
LAYMEN717
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,Как сделать nроверку не nовремени, а nодчеркнута ли строка nредыдущая или нет ?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнить значения в TRxDBGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]