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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2015, 11:11   #1
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию Автоматическое сохранение в DBGridEh - Delphi

DataSet автоматически вызывает метод Post при переходе на новую запись если в старой записи были сделаны изменения
А мне нужно организовать авто сохранение даже если в ячейку внесен хоть один символ.
В каком событии можно прописать эту строчку dbgridEh1.DataSource.DataSet.post?
S_007 вне форума Ответить с цитированием
Старый 02.06.2015, 12:36   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

В каком событии можно прописать эту строчку
в том которое происходит ПОСЛЕ КАЖДОГО изменения поля данных.
Как узнать какое это событие? посмотреть справку
Для тех кто не читает по-английски есть это
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.06.2015, 12:52   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
авто сохранение даже если в ячейку внесен хоть один символ
какая цель преследуется таким действием?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2015, 12:58   #4
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

evg_m, Спасибо! К сожалению ссылка открывается кракозябрами... Событие после каждого изменения поля данных это по моему DataSource DataChange, но в этом событии при записи вызывает ошибку...

Цитата:
Сообщение от Аватар Посмотреть сообщение
какая цель преследуется таким действием?
Чтоб избежать любых кнопок сохранения
Да и строка в таблице может быть только одна, как писал в первом посте автосохранение происходит при переходе на любую другую которой может не быть
делал по нажатию энтэра - но это не подходит

Последний раз редактировалось Stilet; 02.06.2015 в 14:13.
S_007 вне форума Ответить с цитированием
Старый 02.06.2015, 13:18   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
К сожалению ссылка открывается кракозябрами...
поставьте кодировку страницы windows-1251.
Цитата:
но в этом событии при записи вызывает ошибку...
и какую же?
Цитата:
Чтоб избежать любых кнопок сохранения
Для этого достаточно просто при ЛЮБОМ переходе записи (или закрытии) (а не при каждом чихе) проверить состояние набора данных и выполнить (при необходимости) Post.
А если пользователь НЕЧАЯННО нажал что-то и СОВСЕМ НЕ ХОТЕЛ это сохранять?
Ситуация из жизни.
на форме есть
редактируемая таблица (та в которой все сохраняется само)
и есть поле ввода данных для поиска данных.

пользователь пытается что найти(заполнить поле поиска)
НО! по невнимательности(оплошности) ЗАБЫЛ перевести фокус ввода на поле фильтра.
Т.е. ИЗМЕНИЛ данные которые НЕ НАДО было менять.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.06.2015, 13:28   #6
S_007
Форумчанин
 
Регистрация: 22.11.2014
Сообщений: 109
По умолчанию

Ошибку вызывало то что я не делал проверку на EditMode

Код:
 if (ADOTable4.State in dsEditModes) then
 begin
       dbgridEh3.DataSource.DataSet.post;
 end;
Но теперь не происходит ничего, то что я выбрал в комбобоксе не записывается в строку

Вы все правильно написали что пользователь может случайно зацепить...
Я про это думал...
В стоке, в каждом из столбцов будут только Комбо боксы ручного ввода символов в строке не будет

Читать книжки некогда, методом тыка перепробовал все события из DataSource - не записывает в строку выбранное из комбобокса такое подозрение как будто не успевает.
Вы будете сейчас долго и громко смеяться, но я дошол до такого гемора
в событии DataSource DataChange поднимаю флаг что в сроке произошли изменения и в отдельном потоке по этому флагу делаю dbgridEh1.DataSource.DataSet.post, так все работает...
Но это же извращение как я понимаю, думаю что есть у ADO свои стандартные средства или я не прав?
Если есть то подскажите если знаете, книги читать буду потом

Последний раз редактировалось Stilet; 02.06.2015 в 14:15.
S_007 вне форума Ответить с цитированием
Старый 03.06.2015, 10:37   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Если есть то подскажите если знаете, книги читать буду потом
Книгу по ссылке надо не читать, а листать, и постоянно, особенно в тот момент когда хочется задать вопрос на форуме.
Использовать как справочник (каковым она и является) по функциям компонентам методам и свойствам.
возможно нужное вам свойство найдется и в самом TDataSet если возьмете на себя труд ознакомиться с его свойствами, методами
в Delphi справке почти на каждой страничке есть ДВЕ замечательные "кнопки" это
  • See Also (смотри также) список тем близко связанных с данной
  • Example (пример) использования данного свойства и там часто тоже можно подглядеть близкие (или сопутствующие) методы (свойства).

P.S. Все что мы знаем, мы знаем из справок и книг, а книги пишутся на основе справок.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 03.06.2015 в 10:39.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при добавлении новой записи в dbgrideh автоматическое отмечивание галочкой scroyler БД в Delphi 2 23.02.2012 12:27
Сохранение всех данных в бд через DBGrideh postaveche БД в Delphi 0 15.09.2010 19:53
Автоматическое сохранение даты Nomiko БД в Delphi 3 21.05.2009 18:21
Автоматическое сохранение AndreichSB Microsoft Office Access 1 03.01.2007 23:15