Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизПроблема с редактированием 2х таблиц Найти похожие ветки
← →
Андрусь (2002-07-17 19:16) [0]Привет всем! Вот такой возник вопрос: использую компоненты Odac.
Хочу иметь возможность редактировать 2 таблицы. Для этого пишу в SmartQuery в селекте выбор RowID из 2х таблиц + поля. В UpdatingTables - св-во SmartQuery указываю ч/з ; 2 эти таблицы.
Вопрос то в чём - правильно ли я эот делаю. Сомнения стали возникать после того как стали проявлятся глюки как то - невосприятие 2х RowID в селекте,невозможность редактирования как следствие,либо только для одной таблицы. Поясните,посоветуйте как делать правильно. Зараннее спасибо.
← →
Андрусь (2002-07-17 20:33) [1]Хотя сейчас переситал доку - SmartQueyr может апдэйтить только одну таблицу. За исключение PL SQL блоков в SQL Update. Мне же нужно,чтобы были доступны для редактирования поля разных таблиц. И чего - то работает....
← →
roottim (2002-07-18 08:12) [2]напиши SP, укажи ее в SMART->UPDATE и передай туда нужные поля
← →
Андрусь (2002-07-18 10:50) [3]> roottim
SP-? Как апдэйтить - это ясно. Как сделать доступными для редактирования эти(из другой таблицы) поля.
← →
roottim (2002-07-18 11:25) [4]чего тут сложного?
пишешselect .... from t1,t2..
и тд и тп
на серваке пишеш SP с нуными параметрами и нуные апдейты..
rowid выбирать не следует,
в smart пишеш update
begin
вызов SP;
end;
все!
← →
Андрусь (2002-07-18 11:35) [5]Чего-то не доезжаю,извини. Причем здесь хранимая процедура. Я же писал - PL SQL блок,хотя с SP получше..
Мне нужно редактировать поля из селекта в гриде.
← →
roottim (2002-07-18 12:43) [6]скинь
SQL и
PL/SQL в UPDATE
← →
Андрусь (2002-07-18 13:40) [7]Уважаемый roottim!
Что-то снова я вас не понимаю. Какой толк от SQL в Update.
Может я что-то не совсем доходчиво объясняю?
Начну сначала.
Есть форма,на ней OraSession,SmartQuery,OraDataSource,DBGrid. У SmartQuery SQL:
SELECT t1.city, t1.city_id, t1.fk_district, t1.RowId,
t2.district, t2.fk_region, t2.RowId
FROM cities t1, districts t2
WHERE t1.fk_district = t2.district_id
Я хочу,чтобы в гриде для редактирования были доступны все поля,кроме естественно RowId.
← →
roottim (2002-07-18 14:35) [8]сказал ведь убери rowid
ты одно другим перекрываеш
← →
Андрусь (2002-07-18 14:41) [9]Опять мы чего-то не допонимаем. На тестовом примере так сделал -всё заработало. поля в гриде доступны для редактирования.
Пытаюсь делать в рабочем варианте - не работает. Я так понимаю датасет не подхватывает их довтупными для редактирывания...
Не понимаю как ты предлагешь сделать. Ну уберу я оба Rowid из SQL и что: как редактировать поля в гриде?
← →
roottim (2002-07-18 14:52) [10]есть 2 способа включить режим редактирования.
1. прописать в SQL rowid, для мастер таблицы
2. не писать rowid! исполбзовать UPDATE, INSERT и тд
я просил оба кода посмотреть
если написано все верно то должно пахать
← →
Андрусь (2002-07-18 15:20) [11]Вот теперь до меня дошло по-настоящему,что ты имел в виду. Только не совсем ясно как апдейтить без RowId. Если есть уник. id,тогда ясно,а если нет,то только так.
SELECT t1.city, t1.city_id, t1.fk_district, t1.RowId RowId_1,
t2.district, t2.fk_region, t2.RowId RowId_2
FROM cities t1, districts t2
WHERE t1.fk_district = t2.district_id
***********************************
BEGIN
UPDATE cities
SET city_id = :city_id,
city = :city,
fk_district = :fk_district
WHERE RowId = CHARTOROWID(:RowId_1);
UPDATE districts
SET district_id = :fk_district,
district = :district,
fk_region = :fk_region
WHERE RowId = CHARTOROWID(:RowId_2);
END;
← →
roottim (2002-07-18 15:55) [12]
SELECT t1.city, t1.city_id, t1.fk_district, t1.RowId as RowId_1,
t2.district, t2.fk_region, t2.RowId as RowId_2
FROM cities t1, districts t2
WHERE t1.fk_district = t2.district_id
***********************************
BEGIN
UPDATE cities
SET city_id = :city_id,
city = :city,
fk_district = :fk_district
WHERE RowId = :OLD_RowId_1;
UPDATE districts
SET district_id = :fk_district,
district = :district,
fk_region = :fk_region
WHERE RowId = :OLD_RowId_2;
END;
← →
Андрусь (2002-07-18 16:27) [13]Я же почти то же и писал.
Ладно спасибо большое за объяснение!
← →
Андрусь (2002-07-18 16:43) [14]Уважаемый roottim! Извиняюсь,что снова вас отвлекаю,но проблемы на этом не закончились. Перестал срабатывать обработчик на DBNavigator1Click при nbDelete,nbInsert. Обработчик ставим к примеру такой - showMessage(). Как это несчастье победить - не подскажите. Большое спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c