1 (edited by Serhij 2014-12-02 07:46:16)

Topic: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

Помогите советом.
Есть поле типа ТЕКСТ, которое содержит текстовые значения и даты в формате dd.mm.yyyy.
Задача: пройтись по всем ячейкам колонки, отобрать только ячейки с датой dd.mm.yyyy и раскрасить их в красный цвет, если дата ечийки меньше текущей даты.
Со сравнением даты из поля типа ДАТА у меня проблем нет, а вот из поля типа ТЕКСТ - постоянно ошибки несоответствия типов.
Спасибо.

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

Записал так:

begin
      frmMain.TableGrid_vkhidna.BeginUpdate;
      c := frmMain.TableGrid_vkhidna.RowCount - 1;
      for i := 0 to c do
         begin
            sCurrentDate := FormatDateTime('dd.mm.yyyy', now);
            if ValidDate(frmMain.TableGrid_vkhidna.Cells[5,i]) then
               begin
                  if StrToDate(frmMain.TableGrid_vkhidna.Cells[5,i]) < StrToDate(sCurrentDate) then frmMain.TableGrid_vkhidna.Cell[5,i].Color := clRed;
               end;
         end;
      frmMain.TableGrid_vkhidna.EndUpdate;
   end;

вроде, работает.

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

Можно немного упростить

begin
      frmMain.TableGrid_vkhidna.BeginUpdate;
      c := frmMain.TableGrid_vkhidna.RowCount - 1;
      for i := 0 to c do
      begin
            if ValidDate(frmMain.TableGrid_vkhidna.Cells[5,i]) then
            begin
                  if StrToDate(frmMain.TableGrid_vkhidna.Cells[5,i]) < Now then frmMain.TableGrid_vkhidna.Cell[5,i].Color := clRed;
            end;
      end;
      frmMain.TableGrid_vkhidna.EndUpdate;
   end;
Dmitry.

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

Спасибо.

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

Добрый день! А как это сравнение применить в Фильтре GRID.
дата в виде текста представляет собой   

p1:="01.10.2016";

periodFiltr:='date(oSchetData) < StrToDate('+p1+')';

FormFinans.TableGrid2.dbFilter:=periodFiltr;

Выдает ошибку !!!

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

abgroup-artur wrote:

Добрый день! А как это сравнение применить в Фильтре GRID.
дата в виде текста представляет собой   

p1:="01.10.2016";

periodFiltr:='date(oSchetData) < StrToDate('+p1+')';

FormFinans.TableGrid2.dbFilter:=periodFiltr;

Выдает ошибку !!!


попробуйте так

periodFiltr:='date(oSchetData) <  date("' + FormatDateTime('yyyy-MM-DD hh:nn:ss.000', StrToDate(p1) )+'")';
Dmitry.

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

Да, заработало. Спасибо. Что только не перепробывал))

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

abgroup-artur wrote:

Да, заработало. Спасибо. Что только не перепробывал))

можете выложить свой проект для примера?

Re: Сравнение даты вида dd.mm.yyyy из ячейки типа ТЕКСТ с текущей датой

Тоже похожая ситуация, только с текстом.
В колонке таблицы есть ячейки с указанием разного оборудования (в одной ячейке несколько наименований).
Возможно ли применить фильтр при формировании таблицы, чтобы отбирались только те ячейки, в которых есть определенное слово?