Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Проблема с редактированием 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
6-24152
kserg@ukr.net
2002-05-28 10:35
2002.08.08
Прошу пример как на Делфи отправить сообщение CreateMAilSlot


14-24213
drpass
2002-07-12 23:07
2002.08.08
Привет, что ли!


1-24048
Tatan
2002-07-25 18:18
2002.08.08
B-дерево


1-24123
Nox
2002-07-26 19:28
2002.08.08
<<<Вопрос по canvas>>>


6-24166
chernoruk
2002-05-22 07:28
2002.08.08
Серьёзный вопрос по API