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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2012, 11:12   #1
yaskin
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 112
По умолчанию Как вставить значение в другую таблицу после AfterPost

Здравствуйте
Есть база access, ADOQuery, DBGridEh.
При изменении значения в грид, измененное значение автоматически записывается в таблицу в базе, а как записать измененное значение еще и в другую таблицу?
Для спасибо весы слева
yaskin вне форума Ответить с цитированием
Старый 06.06.2012, 11:22   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

1. перестроить запрос на другую таблицу в run-time
2. использовать тригер AfterInsert\AfterUpdate если БД поддредживает тригеры
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 06.06.2012, 12:18   #3
yaskin
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 112
По умолчанию

А как технически это сделать?
Есть две таблицы
Первая: Tgoods содержит следующие поля
goods_id, goods_name, default_spec, price
и вторая Tgoods_spec (спецификации товара) содержит следующие поля
spec_id, goods_id, price, stock

В грид выводятся goods_name из первой таблицы и price и stock из второй.
Так вот при редактировании price или stock значения автоматом обновляются во второй таблице, а как сделать, чтоб значение price обновлялось и в первой таблице

Я так понимаю в AfterPost надо написать запрос что-то вроде этого
Код:
 DM.ADOQueryTemp.Close;
 DM.ADOQueryTemp.SQL.Clear;
 DM.ADOQueryTemp.SQL.Add('UPDATE Tgoods, Tgoods_spec SET Tgoods.price = Tgoods_spec.price WHERE Tgoods.default_spec = Tgoods_spec.spec_id');
 DM.ADOQueryTemp.ExecSQL();
Опять возникает вопрос Какое поле редактируется?
Помогите разобраться пожалуйста..
Для спасибо весы слева
yaskin вне форума Ответить с цитированием
Старый 06.06.2012, 12:34   #4
yaskin
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 112
По умолчанию

Или подскажите, как узнать какое поле редактировалось при AfterPost?
Для спасибо весы слева
yaskin вне форума Ответить с цитированием
Старый 10.06.2012, 11:37   #5
yaskin
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 112
По умолчанию

Подскажите как перестроить запрос на другую таблицу в run-time
Для спасибо весы слева
yaskin вне форума Ответить с цитированием
Старый 10.06.2012, 11:53   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если очень нужно знать что редактировалось, то запоминай в BeforeEdit старые значения, а в AfterPost сравнивай новые значения со старыми. Только не уверен, что в этом есть необходимость. Просто сделать запрос на изменение всех необходимых полей в другой таблице
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.06.2012, 19:45   #7
yaskin
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 112
По умолчанию

Короче 4 дня тупил, пока в AfterPost не написал код из своего же 3 поста, все заработало.
Всем огромное спасибо. Тема закрыта
Для спасибо весы слева
yaskin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставить в таблицу значение через SQL Дмитрий Кузьмичев Помощь студентам 4 06.06.2012 10:35
Как вставить изображение в таблицу MIKE11IPME БД в Delphi 2 22.04.2012 18:12
Нужно найти MAX и MIN значения и вставить их в другую таблицу Владимир П. Microsoft Office Excel 1 20.09.2011 20:35
Как вставить таблицу в richedit blackstersl Компоненты Delphi 0 15.03.2009 19:05
как вставить таблицу Exel doncova1 БД в Delphi 1 19.11.2006 16:07