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

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

Глюки ADO часть 2-ая [D3, D4, D5, D6, MSSQL, Access]


Страницы:   1 2

RAVEN ©   (2002-01-28 15:45:00) 

Доброё время суток, Мастера! Проблема в следующем: Мне нужно удалить некоторые записи из одной таблицы. Всё бы ничего, но эти записи подчинены иерархии, т.е. одна является дочерней другой и т.д... Если какие-нибудь предложения будут по поводу удаления, готов их выслушать(заранее спасибо). Но проблема в том, что мой способ удаления что-то не совсем корректно работает. Значит способ такой. Я вешаю на обработчик события BeforeDelete набора данных(DS:TADODataSet, например), такую строку

PostMessage(MainForm.Handle,DSM_DELETEDOCUMENT,Integer(DataSet),DataSet.Fields[0].AsInteger);

Ниже приведён обработчик мессаджа DSM_DELETEDOCUMENT

procedure TMainForm.DeleteDocument(var Message:TMessage);
var DS:TADODataSet;
Value:integer;
begin
Value:=Message.LParam;
DS:=TADODataSet(Message.WParam);
if not (DS.State=dsInactive) then
While DS.Locate("Parent",Value,[]) do DS.Delete;
end;
При трассировке события BeforeDelete и AfterDelete срабатывают, но дочерние записи удаляются или не все или не удаляются вообще, а главная материнская запись удаляется всегда. Помогите пожалуйста понять что происходит?


Delirium   (2002-01-28 17:02:00) [21]

Ну и что? Вводишь пременную, которая будет "включать" или "выключать" обработку в зависимости от того удаляется родитель или потомки. Но я бы, на самом деле, сделал удаление через SQL - оно и быстрее и надёжнее.


RAVEN   (2002-01-28 16:53:00) [22]

Загвоздка в том что таблица одна, а в ней реализовано дерево.


Delirium   (2002-01-28 16:48:00) [23]

А в чём проблема - поместил все свои действия в BeforeDelete, или есть какая-то загвоздка?


RAVEN   (2002-01-28 16:41:00) [24]

Прошу прощения, база на Access. А насчёт "огорода" я бы с удовольствием выслушал ваш способ.


SergSuper   (2002-01-28 16:36:00) [25]

Я конечно понимаю, что это всё глюки АДО, но зачем такой огород с PostMessage городить?

Кстати непонятно на чем база - на MSSQL или Access?
Если на первом, то это надо делать на стороне сервера.


Страницы:   1 2

Наверх

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