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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2017, 07:00   #1
ДедВобед
 
Регистрация: 26.07.2017
Сообщений: 3
По умолчанию Автоматическое обновление Label1 (Delphi 7)

Вообщем есть база данных в access подключенная к dbgrid1, в базе присутствует столбец где указывается количество ( название таблицы "БВП" название столбца "Количество") так вот у меня есть еще кнопка button1 при нажатии которой в label1 показывается сумма всего количества, то есть при добавлении (или удалении) записи через dbgrid1 например с количеством 5 и добавлении еще одной записи с количеством 3 то при нажатии кнопки в label1 отображается цифра 8. Вопрос такой как сделать так чтобы при добавлении или удалении записи через dbgrid1 автоматически обновлялся label1 а не при нажатии на кнопку? может есть какая процедура или событие куда вставить этот код?
ДедВобед вне форума Ответить с цитированием
Старый 26.07.2017, 08:26   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ДедВобед Посмотреть сообщение
то есть при добавлении (или удалении) записи через dbgrid1
а как Вы добавляете/удаляете запись? через DBNavigator ?

впрочем, это не важно.
важно то, что DNGrid1 у вас связан с источником данных (dataset).
открываете в инспекторе этот ваш набор данных (скорее всего у Вас это таблица),
переходите в закладку "события" (events), находите там событие AfterPost, кликаете по нему, открывает редактор код, в открывшемся окошке пишете вызов вашего метода обновления.
всё. можно проверять.
p.s. если что, то там должны быть события AfterInsert, AfterDelete - можно и на них обработчик повесить.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.07.2017, 09:14   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Я бы так рекомендовал

Завести доступную обработчикам событий переменную, например OldCount

В BeforeDelete и BeforeEdit запомнить в OldCount количество из текущей строки датасета.
В BeforeInsert поместить в OldCount 0

В AfterDelete вычесть из всего количества OldCount

В AfterPost вычесть из всего количества OldCount и прибавить количество из текущей строки датасета.

Будет работать для любого визуального редактирования
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.07.2017, 16:38   #4
ДедВобед
 
Регистрация: 26.07.2017
Сообщений: 3
По умолчанию

Спасибо! сделал на afterpost. можете еще помочь вот пишу код

Код:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select sum(Количество) from БВП;');
ADOQuery1.Open;
теперь Label1 обновляется автоматически (количество складывается) но когда я удаляю запись то Label1 не изменяется а остается старое количество. подскажите как это решить?
ДедВобед вне форума Ответить с цитированием
Старый 26.07.2017, 16:57   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Просто в AfterPost отловишь только вставку. Для редактирование, если оно есть, этого мало. А удаление вообще не отловишь. См. #3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.07.2017, 18:38   #6
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
может есть какая процедура или событие куда вставить этот код?
Используйте событие OnRecordChangeComplete.
Если верить хэлпу, это событие возникает во всех случаях, даже в случаях UNDO...
kropotkina-alice вне форума Ответить с цитированием
Старый 26.07.2017, 19:27   #7
ДедВобед
 
Регистрация: 26.07.2017
Сообщений: 3
По умолчанию

Спасибо огромное! действительно OnRecordChangeComplete работает так как мне нужно.
ДедВобед вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое обновление программы IronSkull C++ Builder 1 13.05.2016 08:24
Автоматическое обновление цен bitup PHP 14 03.04.2014 00:33
Автоматическое обновление программы Paul Hindenburg Работа с сетью в Delphi 23 06.09.2011 15:51
Автоматическое обновление ogololobov2009 Microsoft Office Excel 1 27.01.2011 19:19
Автоматическое обновление программы. Casper-SC Общие вопросы .NET 0 22.05.2010 20:41