powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запись в ячейку cxGrid с помощью ADOTable
3 сообщений из 3, страница 1 из 1
Запись в ячейку cxGrid с помощью ADOTable
    #39668568
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Вопрос простой, но я сильно туплю...
Надо по изменению одной ячейки в cxGrid менять дату в соседней ячейке.
Делаю так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TForm18.cxGrid2DBTableView1Zav_NomerPropertiesEditValueChanged(
  Sender: TObject);
begin
if(ADOQuery5.Active)
  then ADOQuery5.Close;
    ADOQuery5.SQL.Clear;
    ADOQuery5.SQL.Add('select Date1=CASE WHEN EXISTS (Select Date_PSI from Kartochka where Naimenovanie='''+ADOTable1.FieldByName('Naimenovanie').AsString+''' and Dec_Nomer='''+ADOTable1.FieldByName('Dec_Nomer').AsString+''' and Zav_Nomer='''+TcxTextEdit(Sender).Text+''') THEN (Select Date_PSI from Kartochka where Naimenovanie='''+ADOTable1.FieldByName('Naimenovanie').AsString+''' and Dec_Nomer='''+ADOTable1.FieldByName('Dec_Nomer').AsString+''' and Zav_Nomer='''+TcxTextEdit(Sender).Text+''') ELSE (Select TOP 1 Date_Proizv from Dannie_VK where Naimenovanie='''+ADOTable1.FieldByName('Naimenovanie').AsString+''' and Dec_Nomer='''+ADOTable1.FieldByName('Dec_Nomer').AsString+''' and Zav_Nomer='''+TcxTextEdit(Sender).Text+''') END');
      try
        ADOQuery5.Open;
      finally
        ADOTable1.FieldByName('Date_Proizv').AsDateTime:=ADOQuery5.FieldByName('Date1').AsDateTime;
      end;
end;


Дата меняется, а вот изменяемое значение пропадает и в базу не заносится!
Подскажите как правильно сделать?
...
Рейтинг: 0 / 0
Запись в ячейку cxGrid с помощью ADOTable
    #39668582
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут всё в кучу. Надо либо на датасете ловить изменения и там же менять (например, AfterEdit), либо на EditValueChanged запускать свое событие PostMessage, ловить его на форме и там уже дальше менять (т.к. в момент EditValueChanged у грида сохранено еще прошлое значение).
...
Рейтинг: 0 / 0
Запись в ячейку cxGrid с помощью ADOTable
    #39668613
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо JaDi за совет. Мне кажется ничего ловить не надо и обрабатывать отдельно, ведь без
Код: pascal
1.
ADOTable1.FieldByName('Date_Proizv').AsDateTime:=ADOQuery5.FieldByName('Date1').AsDateTime;

все вводится без проблем. Мне просто не понятна природа такого глюка. В этот момент что, фокус пропадает или ADO не может одновременно несколько полей поменять?
Мне кажется проблема в обработке.
В onEditValueChanged новое значение получаю из
Код: pascal
1.
TcxTextEdit(Sender).Text


Может можно напрямую в cxGrid записать? (с DBGrid раньше так и делал)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запись в ячейку cxGrid с помощью ADOTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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