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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2012, 16:16   #1
ScorpioN_T
Пользователь
 
Регистрация: 27.10.2008
Сообщений: 62
По умолчанию firebird, delphi, dbgrid редактировать одно поле

Доброго времени суток!

Есть форма, на ней DBGRID, IBDATABASE, IBTransaction, IBDataset, и еще несколько компонентов (это щас не важно).
В Гриде отображается запрос из IBDataset, взятый из двух таблиц
Код:
select ID_C, NAME_C, GEN_ID_C, c.ID_R, NAME_R
from CATEGORY c, RAZDEL r
where c.id_r= r.id_r
структура таблиц:
Razdel : ID_R, NAME_R, GEN_ID_R
Category : ID_C, NAME_C, ID_R, GEN_ID_C
Связываются по полям ID_R

Ниже на рисунке ( на скриншоте формы) показано что отображается в Гриде
Меня щас интересуют ДВА столбца это: NAME_R, ID_R
столбец NAME_R, я данные беру из таблицы RAZDEL (если нужно, код могу показать).
Вопрос:
Как изменив поле NAME_R изменилась поле ID_R (это поле относится таблице Category).
Это мне надо при редактирования данных и добавления данных в таблицу Category

Помогите разобраться с этим вопросом...
Изображения
Тип файла: jpg 1.jpg (58.5 Кб, 82 просмотров)
ScorpioN_T вне форума Ответить с цитированием
Старый 11.05.2012, 22:01   #2
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

ну делайте на событи онклик изменение.. токо вам будит немного сложновато это сделать ибо в запушеной транзакции вам не даст сделать апдейт, придётся закрывать транзакцию, делать апдейт и новую выборку
Dozent вне форума Ответить с цитированием
Старый 14.05.2012, 09:29   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а зачем его менять? если это ключ - он должен быть уникальным и какие-то "левые" операции с ним крайне нежелательны. а если уж сильно хочется его менять синхронно между двумя таблицами - ставь тригер на таблицу RAZDEL с кодом примерно:
Код:
UPDATE category SET id_r = new.id_r WHERE id_r = old.id_r;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 17.05.2012, 14:18   #4
ScorpioN_T
Пользователь
 
Регистрация: 27.10.2008
Сообщений: 62
По умолчанию

Спасибо за ответы!
решил вопрос
таким образом
в IBDataSet в свойстве InsertSQL (для вставки новой записи) прописал следующее:
Код:
insert into CATEGORY
  (ID_C, NAME_C, ID_R, GEN_ID_C)
values
  (:ID_C, :NAME_C, 
   (select r.id_r from razdel r where r.name_r = :name_r), 
   :GEN_ID_C)
в свойстве ModifySQL (при редактирования записи) прописал следующее:
Код:
update CATEGORY
set
  ID_C = :ID_C,
  NAME_C = :NAME_C,
  ID_R = (select r.id_r from razdel r where r.name_r = :name_r)
where
  GEN_ID_C = :OLD_GEN_ID_C
П.С. Я решил этот вопрос еще в день публикации поста, просто забыл что тут я писал про это, и не заходил сюда...

Тема закрыта.
ScorpioN_T вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi+FireBird из DBGrid в ... Drugnir БД в Delphi 10 08.12.2010 19:41
как изменить только одно поле в БД. Делфи. FACE OFF Помощь студентам 0 24.09.2010 20:21
Сцепить в одно поле AK BULLETS БД в Delphi 7 16.07.2010 11:07
Как в QRepopt отображать одно и тоже поле в нескольких колонках? Milishka БД в Delphi 2 19.04.2010 14:37
Как поле FireBird.домен.Numeric(7,2) увидеть в DBGrid с добной частью? Vladimir Trufanov БД в Delphi 2 07.01.2009 10:00