Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.02.2012, 17:33
whizzkey whizzkey вне форума
Прохожий
 
Регистрация: 16.10.2010
Сообщения: 35
Репутация: 10
По умолчанию Иерархия и treeview

сем привет, помогите пожалуйста разобраться в чем ошибки. Пишу приложение для бд, в кратце суть - небольшая система управления персоналом на предприятии, структура подразделений представлена в виде древовидной иерархии, просмотр данных о сотрудниках реализован как для отдельного подразделения, так и в виде полного списка.
Так вот есть у меня хранимая процедурка которая отвечает за формирование иерархии подразделений и процедурка в самом приложении которая выстраивает иерархию в TreeView, но чето гдето косячит, и выстраиваются потомки только 1го подкорневого элемента, остальных дельф не видит. Вот хранимая процедура(список подразделений хранится в таблице DEPS):
Код:
begin
FOR SELECT DeptFullName FROM DEPS
WHERE ParentDeptID =:pDeptID
INTO :rDeptFullName
DO SUSPEND;
end

Вот процедура в приложении:

Код:
procedure TForm1.SetSelection;
  begin
    Screen.Cursor := crSQLWait; //Изменяем форму указателя мыши
    //на "песочные часы"
    with datamodule1, sidsStaff, treeview1.Selected do
        begin
        Close; //Закрываем набор данных sidsStaff
              //Выбираем все столбцы из представления FullList
        DataSet.CommandText := 'select * from FullList';
           if AbsoluteIndex > 0 then
               begin //Если выбран НЕ корневой элемент структуры, то ...
                    //Находим соответствующую запись в таблице DEPS
                 datamodule1.sidsDeps.Locate('DeptFullName', Text,[]);
                   //Добавляем условие в запрос -
                   //выбор сотрудников из всех подразделений, для которых
                   //содержимое поля Parents начинается с соответствующего
                   //списка идентификаторов
                DataSet.CommandText := DataSet.CommandText+' WHERE DepID = '+IntToStr(sidsDepsDeptID.AsInteger)+' or Parents starting with '+#39;
                 if Parent.AbsoluteIndex > 0 then
                  DataSet.CommandText := DataSet.CommandText + sidsDepsParents.AsString;
                    //Добавляем к списку Parents идентификатор
                    //текущего подразделения
                DataSet.CommandText := DataSet.CommandText + IntToStr(sidsDepsDeptID.AsInteger)+#39;
               end;
           if ckByPoss.Checked then
                 begin
                //Если есть сортировка по уровню должностей, то...
                DataSet.CommandText := DataSet.CommandText+' order by PosLevel, LastName, FirstName, FatherName'
                 end
           else
              //в противном случае сортируем строки по именам
              DataSet.CommandText := DataSet.CommandText+' order by LastName, FirstName, FatherName';
              Open; //Выбираем данные из представления FullList
              Screen.Cursor := crDefault; //Восстанвливаем указатель мыши,
              //выбранный по умолчанию
      end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter