Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
4-24268
Linx
2002-05-17 18:46
2002.08.08
Аналог группы bat-файлов.


3-23914
FLIZ
2002-07-18 10:54
2002.08.08
Как выполнить V.Basic-ский код, хранящейся в базе Access ?


3-23855
S_Andy
2002-07-16 16:52
2002.08.08
Как связать 2 BDE Query связать (master-details)


14-24196
SDK
2002-07-13 06:22
2002.08.08
SDK


3-23948
kalliopiy
2002-07-17 17:40
2002.08.08
Работа с полем типа Date и соотв. визуальными компонентами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский