Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2009, 11:41   #1
dalien
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 17
По умолчанию сохранение изменений в DBGrid/DBGridEh, при изменении фокуса ячейки

Добрый день всем. Помогите мне разобраться с DBGrid/DBGridEh.
Snap1.jpg

НА форме лежат 2 DBGrid,в первом отображается инфа по сопроводительным письмам(DBGrid заполняется через ADOQuery). Если мы нажимаем кнопкой мыши на любую строку во втором DBGrid'е отображается информация о документах,которые прикреплены к сопроводительному письму. На картинке выбрана запись с номером письма 185/09205, а к этому письму прилагается договор и спецификация.Соответственно, изменяя набор данных 1 грида, изменяются записи во 2 гриде.

при двойном клике мыши на записи,я перевожу ее в режим редактирования
Код:
procedure TForm8.DBGridEh2DblClick(Sender: TObject);
begin
     DBGridEh2.Options:=dbgrideh2.Options-[dgRowSelect];
     DBGridEh2.Options:=dbgrideh2.Options+[dgEditing];
end;
есть процедура UpdateDocCover которая записывает изменения DBGrid'а
Код:
procedure TForm8.UpdateDocCover();
var q:String;
begin
        DM.UpdateDocCover.Active:=false;
        DM.UpdateDocCover.Close;
        DM.UpdateDocCover.SQL.Clear;
        q:='update doc_cover set doc_cover.doc_cov=:name where doc_cover.id_doc_cover=:par1';
        DM.UpdateDocCover.SQL.text:=q;     DM.UpdateDocCover.Parameters.ParamByName('par1').Value:=DBGridEh2.Columns[0].Field.asString;
        DM.UpdateDocCover.Parameters.ParamByName('name').Value:=DBGridEh2.Columns[1].Field.asString;
        DM.UpdateDocCover.ExecSQL;
        DM.UpdateDocCover.Active:=false;
        DM.UpdateDocCover.Close;
        DM.DSDocCover.DataSet.Active:=false;
        DM.DSDocCover.DataSet.Close;//:=true;
        DM.DSDocCover.DataSet.Open;//:=true;
        DM.DSDocCover.DataSet.Active:=true;
        showmessage('данные изменены и сохранены');
end;
Теперь самое главное, как организовать эти изменения после того,как пользователь внес изменения в поле(ячейку) и нажал на клавишу Enter или перешел на другую запись и при этом выскакивало сообщение о том,что данные будут изменены.
Если я перехожу на другую запись, то измененные данные сохраняются,но надо вывести сообщение,что данные будут изменены.
Как лучше это сделать, обработку каких событий выполнять.
С уважением,dalien.
dalien вне форума Ответить с цитированием
Старый 30.07.2009, 12:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и нажал на клавишу Enter
Прописать в DBGrid.OnKeyPress сохранение по нажатию клавиши с кодом #13
Цитата:
или перешел на другую запись
Код сохранения в этом случае удобно писать в событии OnBeforeScroll. Ну и соответственно там проверять провелись ли какие нить изменения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2009, 13:22   #3
dalien
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 17
По умолчанию

сейчас опробую
dalien вне форума Ответить с цитированием
Старый 30.07.2009, 14:40   #4
dalien
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 17
По умолчанию

stilet, а как проверить были какие-нибудь изменения или нет
?
dalien вне форума Ответить с цитированием
Старый 30.07.2009, 14:42   #5
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Код:
if ADOTable1.Modified then
Evgeniy26 вне форума Ответить с цитированием
Старый 30.07.2009, 15:12   #6
dalien
Пользователь
 
Регистрация: 18.06.2009
Сообщений: 17
По умолчанию

изменения не в таблице,а в поле(ячейке) DBGrid
dalien вне форума Ответить с цитированием
Старый 30.07.2009, 15:36   #7
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

DBGrid служит для отображения информации из ADOTable. Так что все изменения происходят в ADOTable
psycho-coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение книги Excel по названию ячейки и по пути ячейки IFRSoff Microsoft Office Excel 16 07.06.2012 16:58
разрушение индексов при изменении таблицы bosston БД в Delphi 1 23.06.2009 08:22
Замена DBGrid на DBGridEh artemavd БД в Delphi 0 02.06.2009 18:00
проверка изменений в Memo и сохранение Костян Пират Общие вопросы Delphi 5 20.03.2009 22:27
Работа программы при изменении Rom1k06 Microsoft Office Excel 8 18.01.2009 19:05