Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO - удаление записей из связанных таблиц [D7]


Kerim_ ©   (2005-06-02 13:28:00) 

В запросе более чем из 1-й таблицы rowid возвращаю только из 1-й.
При попытке удаления записей ADO пытается удалять и из связанных. Как побороть?

ЗЫ:
1. DOA не предлагать.
2. Использовать процедуры или другой запрос только из 1-й таблицы - этот вариант очевиден.


Anatoly Podgoretsky   (2005-06-03 16:07:00) [1]

isasa ©   (03.06.05 15:59) [11]
Это совсем другое, мы говорим про JOIN


isasa   (2005-06-03 15:59:00) [2]

Проверить наличие - "Каскадное удаление" в наложенных связях таблиц.


Anatoly Podgoretsky   (2005-06-03 13:54:00) [3]

ANB ©   (02.06.05 13:43) [4]
Если связку таблиц описывать через JOIN, то ADO начинает понимать, откуда удалять.

Как раз наоборот перестает понимать.
Просто АДО делает это логически, при удалении удалит во всех возможных таблицах по критерию, как просили так и делает.
Отсюда вывод - не надо просить странного!!!


Kerim_   (2005-06-02 15:58:00) [4]

Кстати, маленькое добавление.
Если это detail DataSet, то определять 'Unique Table' лучше непосредственно перед удалением.


ANB   (2005-06-02 15:23:00) [5]


> msguns ©   (02.06.05 13:30) [2]
- ну дык DOA и Oracle - синонимы. :))) Кстати, такая проблема не только в оракле бывает. Я в фоксе + адо такую же лабуду наблюдал. Причем у меня не было возможности определять 'Unique Table', разве что парсить SQl, а у меня было около 400 запросов, которые надо было гонять в автомате и которые менял юзер. Пришлось жестко определить - все связки только явными JOIN.


msguns   (2005-06-02 15:16:00) [6]

>Kerim_   (02.06.05 14:55) [6]
>2msguns: кто знал ответ, тот прекрасно понял проблему.

Когда я постил [2], [1] у меня не было. Надо перечитывать прежде чем отправлять, тогда не будет подобных недоразумений.


Kerim_   (2005-06-02 14:55:00) [7]

большое спасибо sniknik за правильный ответ
и ANB за пояснения.
2msguns: кто знал ответ, тот прекрасно понял проблему.


ANB   (2005-06-02 13:44:00) [8]

3) Или как
> sniknik ©   (02.06.05 13:41) [3]
. Все имхо. Я бы на DOA или ODAC перешел.


ANB   (2005-06-02 13:43:00) [9]

Если связку таблиц описывать через JOIN, то ADO начинает понимать, откуда удалять. ROWID для ADO - по барабану. А оракла не ест явные JOIN. Соответственно, ADO не может автоматически определить главную таблицу в запросе (они все во фромовой части) и его клинит.
Выход :
1) удаление ручками путем своих delete как тебе нужно
2) использование DOA или ODAC


sniknik   (2005-06-02 13:41:00) [10]

указать главную таблицу
ADODataSet1.Properties['Unique Table'].Value:= 'xxx';


Kerim_   (2005-06-02 13:30:00) [11]

Прошу прощения, в исходном письме ставил галку на "Oracle", но почему-то не отобразилось. Речь идет о доступе к Oracle.


msguns   (2005-06-02 13:30:00) [12]

Да уж, проблема описана исчерпывающе..


Наверх

Титульная страница Поиск, карта сайта Написать письмо