Форум: "Базы";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
ВнизТонкий вопрос про компоненты DAO 3.4.5(Oracle) Найти похожие ветки
← →
FROM_X (2003-01-09 12:59) [0]Допустим есть связь двух таблиц один-к-одному.
Пусть запросом, объединили мы данные из эти 2-х таблиц.
колонка 1, колонка 2 из табл.1, табл.2
Есть ли способ одновременно добавлять, редакировать и удалять
данные из этих двух таблиц как из одной.
Хотелость бы иметь( если есть) стандартные способы решения (от создателей).
Хотя можно и проанализировать разные алгоритмы решения.
--------------
Повторяю вопрос тонкий. сам работаю не один месяц с DAO.
← →
FROM_X (2003-01-09 13:09) [1]Разве никто не работал с DAO? Странно.
← →
FROM_X (2003-01-09 13:13) [2]Ну может с другими компонентами кто то проделовал тоже самое
db_express? ADO ?
← →
FROM_X (2003-01-09 13:26) [3]Ау Ау Ау
← →
Max Zyuzin (2003-01-09 13:29) [4]C DAO + Oracle не работал... работал с локальными и IBase... но думаю стандартного нету ничего... По крайней мере АФАИК в IB такого нету.
← →
FROM_X (2003-01-09 13:30) [5]Что такое АФАИК?
← →
Val (2003-01-09 13:42) [6]АФАИК к теме не относится :)
не знаком с именно этими компонентами, но возможно есть что-то типа TUpdateProcs, в котором определяются имена хп, ответственных за вставку, удаление и изменение данных в связанном с ним соотв. DataSource?
← →
Sergey13 (2003-01-09 13:45) [7]2FROM_X (09.01.03 12:59)
>Разве никто не работал с DAO?
Может ты DOA(direct oracle access) имеешь в виду?
Если да, то насчет двух таблиц сразу не скажу, но для того чтобы сделать датасет редактируемым нужно в запрос добавить rowid
select t.*,t.rowid from table_name t
Кстати, а зачем так хранить (один-к-одному) - может проще свести все в одну таблицу? Поясни задачу.
← →
Max Zyuzin (2003-01-09 13:47) [8]AFAIK - as far as I know
На сколько мне известно :)
← →
passm (2003-01-09 13:52) [9]IMHO механизм поддержки правильности данных должен осуществляться триггерами. На приложение в таких делах лучше на полагаться :)
← →
FROM_X (2003-01-09 13:54) [10]ребята, можно я скромно повторюсь, с DOA(direct oracle access)
я работаю не один год. и с Oracle тоже, и rowid один раз видел :)
Способ хранения данных то же не надо обсуждать.
Вопрос буквально не о том.
Если имеем select col1,col2 from table1,table2 where ...
то как можно отредактировав col1,col2 записать в table1,table2
(Если нет стандарта что я у же замечаю) то может быть есть красивый алгоритм (с кэшированием или подобной хернёй)
ну нет у DAO TUpdateSQL - Нет
← →
passm (2003-01-09 14:02) [11]FROM_X (09.01.03 13:54)> Не работал с DOA и с Oracle. Но что мешает просто пробежаться по циклу и выполнить SQL предложения на измененных записях?
← →
Sergey13 (2003-01-09 14:08) [12]2FROM_X (09.01.03 13:54)
>я работаю не один год. и с Oracle тоже
Чтото не похоже, или может это у тебя стиль задания вопросов такой. 8-)
>Если имеем select col1,col2 from table1,table2 where ...
То такой датасет на DOA ты вообще не отредактируешь. 8-)
DOA и DAO это разные вещи. Хватит путать народ.
Я тебе принцип показал.
select t.*,t.rowid from table_name t
Попробуй творчески переаботать на 2 таблицы. Мне что ли пробовать? О результатах сообщи, если хочешь.
← →
FROM_X (2003-01-09 14:12) [13]ОбЯснЯю
Можно!
Всего то нужно
1)зарание знать имена таблиц (или парсить)
2)поля к ним соответствующие (зарание знать или парсить)
3)Изменены, добавлены удалены ли они
4)запомнить эти данные
5.1)Если нет кэширование в DataSet то отменить изменения в
исходном запросе если он вообще позволил изменять поля
и выполнить update,insert, delete для соответсв. таблиц.
5.2)Если есть кэширование то не подтверждать изменения и выполнить update,insert, delete для соответсв. таблиц.
6) При этом надо проверить на Exeption
7) После всего этого что мне больше всего в этом не нравится - это делать refresh
-Это один из вариантов работы
← →
Тормоз (2003-01-09 14:14) [14]Если таблицы связаны 1-1 то можно объединить их в одно представление(view) и вставлять/редактировать/удалять данные посредством INSTEAD OF триггеров
← →
FROM_X (2003-01-09 14:21) [15]это тоже вариант и кстати я его предложил. (Рад что нашёлся знаток Oracle)
Но я признаюся, смысл моих допросов таков.
У меня коллега работал с PowerBuilder (этот мощный инструмент для работы с БД и только) и там эта задача ну просто пустяковая.
Вот он меня и мурыжит с этим. А я как Истинный потриот Delphi Пытаюся доказать что он не прав.
← →
Sergey13 (2003-01-09 14:29) [16]2FROM_X (09.01.03 14:12)
1 и 2. придется парсить, ибо ни я ни кто бы то ни было здесь их не знает. 8-)
3. Кто они?
4. Зачем?
5.1 При чем тут кеширование и откат изменений и как они между собой связаны?
5.2. см 5.1
6. Чего проверить?
7. А кому щас легко?
Чей то ты совсем меня(и не только меня наверное) запутал. Описал бы задачу нормально. Может и насоветует кто чего дельного? А так ... Я пас.
← →
FROM_X (2003-01-09 14:43) [17]Про парсинги SQL выражений это я бы не советовал на скорую руку делать и (блин)SQl -он веть тоже разный.
А про всё остальное с 1. по 2. это всё правда (сам делаю)
А если задача не понятна ни кому, то чё на неё столько народу отвечает?
Задача =============
Имеем две таблицы
tab1 с полями id1,Name1 и
tab2 с полями id2,Name2
--------
Строим
Select id1,id2,Name1,Name2 From tab1,tab2
where id1=id2
--------
Ну скажем в таблицах в DBGrid-e отредактировали Name1,Name2
--------
Хочу записать изменения оосветственно в tab1,tab2- в базе данных.
← →
Тормоз (2003-01-09 14:57) [18]Кстати у TOracleDataset есть свойство UpdatingTable где Вы сможете указать какую таблицу следует модифицировать при операции с датасетом, а также еще более гибкое средство - событие OnApplyRecord где при сохранении можно делать вообще все, что заблагорассудится. Главное в конце обработчика поставить Applied:=True, чтобы отменить стандартное поведение компонента при модификациях данных
← →
FROM_X (2003-01-09 15:15) [19]Да с этим событием я признаюсь не работал, если можно
ЭЭЭ "Тормоз" извиняюсь :) можешь сам расказать мне об этом? как ты с этим работал?
или даже может пример?
ну прям плиз плиз плиз
← →
Тормоз (2003-01-09 16:21) [20]Да я в принципе все рассказал. Суть в том что, например, при вставке в DataSet с запросом
Select id1,id2,Name1,Name2 From tab1,tab2
where id1=id2
Вы можете используя компоненты TOracleQuery вставить
сначала в tab1, потом в tab2, и затем commit или rollback.
Что касается примера, то лучше чем в хелпе примера не придумаешь 8-)
← →
Big_Rom (2003-01-09 18:36) [21]Ну а если вот так
Select t1.id1,t2.id2,t1.Name1,t2.Name2,t1.rowid,t2.rowid
From tab1 t1,tab2 t2
where t1.id1=t2.id2
выдаст редоктируемый набор и я думаю писать будет соответственно
туда где чтото изменили.
Или я неправ
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c