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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2009, 18:27   #1
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию Вычисление по связям

Есть 2 связные таблицы у которых есть поле Num, когда клацаем по первой таблице высвечиваются определенные данные во второй, при условии что в Num одинаковые значения. Вопрос: Нужно при удалении записи во второй таблице ADOTable2.Delete, чтобы в Первой таблице в поле Количество стало +1 именно в той строке где Num=Num. Помогите плз
program123 вне форума Ответить с цитированием
Старый 15.12.2009, 19:00   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Количество стало +1 именно в той строке где Num=Num.
Не понял. Это как?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 15.12.2009, 19:06   #3
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

в первой таблице 2 поля Num , Количество , и нужно чтобы в этом поле количество +1 значение было, т.е удалили из второй таблице в первую +1 добавилось
program123 вне форума Ответить с цитированием
Старый 15.12.2009, 20:00   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Код:
procedure TForm1.Table2BeforeDelete(DataSet: TDataSet);
begin
Table1.Locate('Num',Table2.FieldByName('Num').Value,[]);
end;

procedure TForm1.Table2AfterDelete(DataSet: TDataSet);
begin
Table1.Edit;
Table1.FieldByName('Количество').Value:=Table1.FieldByName('Количество').Value+1;
Table1.Post;
end;
mihali4 вне форума Ответить с цитированием
Старый 15.12.2009, 20:21   #5
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

mihali4, извините за беспокойство, но меня интересует вот что:
Код:
procedure TForm1.Table2BeforeDelete(DataSet: TDataSet);
begin
Table1.Locate('Num',Table2.FieldByName('Num').Value,[]);
end;
Удаляет из двух таблиц, а нужно чтобы из второй удаляло , а в первой таблице просто поле КОЛИЧЕСТВО увеличивалось на 1, т.е если во второй таблице строка где Num=4 то в первой таблице в той строчке где поле Num тоже равно 4 поле количество увеличивалось. извините если не понятно объясняю.
program123 вне форума Ответить с цитированием
Старый 15.12.2009, 20:28   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Эти обработчики ничего не удаляют.
Первый - ставит курсор в первой таблице на запись, у которой Num равен Num во второй таблице. Просто выбирает нужную запись.
Второй - только после того, как вы удалили запись из второй таблицы, просто прибавляет единичку к количеству в первой таблице.
mihali4 вне форума Ответить с цитированием
Старый 15.12.2009, 20:43   #7
program123
Подтвердите свой е-майл
 
Регистрация: 12.02.2009
Сообщений: 144
По умолчанию

всё работает, но не каждый раз, иногда пишет не может найти строку обновления. может надо обнулять. буду разбираться, спасибо за помощь
program123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление интегралов Golovastik Общие вопросы C/C++ 17 25.12.2013 00:05
Вычисление интеграла StudeHt Помощь студентам 1 01.05.2009 19:16
Вычисление felmor Паскаль, Turbo Pascal, PascalABC.NET 0 26.12.2008 17:45
вычисление f(x) felmor Паскаль, Turbo Pascal, PascalABC.NET 0 24.12.2008 22:11
Вычисление полинома file Паскаль, Turbo Pascal, PascalABC.NET 5 29.05.2008 21:00