Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 20:20   #1
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
Вопрос Дерево в БД Ассеss(удаление дочерних узлов)

Имеется еще один вопрос: Есть дерево, таблица tRazdels и кнопочка "удалить выделенную ветку". Дабы избавится от всех дочерних узлов в таблице, при удалении главного добавляю код.
Код:
 
var nomer:integer;
tRazdels.Locate('R_Name', TreeView1.Selected.Text, []);
  nomer:=tRazdels['R_Num'];
     tRazdels.Delete;
     while not tRazdels.Eof do
     begin
     if tRazdels['R_Parent']=nomer then
     begin
     tRazdels.Delete;
     tRazdels.Next;
     end;
     end;
без этого куска кода с дерева удаляется и родительский и дочерний узлы а с таблицы удаляются только родительские узлы(тоесть остается мусор с детенышами).

Вот полный код процедуры удаления:
Код:
procedure TfMain.N4Click(Sender: TObject);
var
  s,nomer: String; //для строки запроса
begin
  //Проверим - есть ли выделенный раздел?
  //Если нет - выходим:
  if TreeView1.Selected = nil then Exit;
  //иначе формируем строку запроса:
  s:= 'Удалить "' +
TreeView1.Selected.Text + '"?';
  //запросим подтверждение у пользователя:
  if Application.MessageBox(PChar(s), 'Внимание!',
      MB_YESNOCANCEL+MB_ICONQUESTION) <> IDYES then Exit;
  //если не вышли - пользователь желает удалить раздел.
  //найдем и удалим его вначале из таблицы:
  tRazdels.Locate('R_Name', TreeView1.Selected.Text, []);
  
//дальше мои дебри
nomer:=tRazdels['R_Num'];
     tRazdels.Delete;
     while not tRazdels.Eof do
     begin
     if tRazdels['R_Parent']=nomer then
     begin
     tRazdels.Delete;
     tRazdels.Next;
     end;
     end;//тут мои дебри заканчиваются
  //теперь удаляем раздел из дерева:
  TreeView1.Items.Delete(TreeView1.Selected);
end;


Но к сожалению не работает. Может кто знает в чем дело?
atihiy2010 вне форума Ответить с цитированием
Старый 14.03.2011, 20:44   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Код:
     if tRazdels['R_Parent']=nomer then
     begin
     tRazdels.Delete;
     tRazdels.Next;
     end else
     tRazdels.Next;
Красное - убрать ! Зеленое - добавить.
А вообще, лучше сделать через запрос...
asmodey1 вне форума Ответить с цитированием
Старый 14.03.2011, 22:45   #3
atihiy2010
Пользователь
 
Аватар для atihiy2010
 
Регистрация: 22.04.2010
Сообщений: 60
По умолчанию

Спасибки. Все вышло.
atihiy2010 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление узлов из дерева ArniLand Общие вопросы по Java, Java SE, Kotlin 0 22.09.2010 21:36
Запрос в БД АССЕSS malikpol Microsoft Office Excel 8 13.06.2010 10:37
База ассеss, компоненты АDО. kenta БД в Delphi 4 28.11.2009 09:50
не работает удаление и поиск в программе про бинарное дерево Барби Общие вопросы C/C++ 6 24.12.2008 22:20