Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Выборка дерева за один проход (число прочтений - 2288 )
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Выборка дерева за один проход
19. Сентября 2008 :: 07:26
Печать  
Не знаю, в правильной ли ветке создал тему.
Также, вполне возможно, что буду употреб##ть неправильные термины - нет опыта работы с базами данных и SQL.
Есть на данный момент только задача:
Есть справочник "Задачи", у к-го есть поле "ЗадачаРодитель". На форме есть Дерево+Таблица, к-ю надо заполнить - показать все дерево.
Самый простой/тупой вариант - рекурсивно заполнять дерево.

Вопрос: как задать структуру справочника и какой запрос использовать, чтобы за одну выборку получить все дерево задач?

Спасибо
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Выборка дерева за один проход
Ответ #1 - 19. Сентября 2008 :: 07:30
Печать  
1) Динамическим SQL запросом;
2) столько раз CASE сколько уровней
  
Наверх
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выборка дерева за один проход
Ответ #2 - 19. Сентября 2008 :: 07:30
Печать  
Сбалансированная иерархия или как в 1С только макс ограничение а родителей может быть по выбору?
И что подразумевать под заполнением дерева? Надо только группы?
Рекусрию можно организовать и средствами SQL:
http://msdn.microsoft.com/en-us/library/aa172799.aspx
  
Наверх
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Выборка дерева за один проход
Ответ #3 - 19. Сентября 2008 :: 07:42
Печать  
Справочник одноуровневый. Дерево - иерархия задач. Корень - главная задача, ветви - подзадачи.

Динамический SQL запрос - надо будет использовать ODBCDatabase (мало что в этом понимаю)?

База ДБФ
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Выборка дерева за один проход
Ответ #4 - 19. Сентября 2008 :: 07:47
Печать  
blindvic писал(а) 19. Сентября 2008 :: 07:42:
Справочник одноуровневый. Дерево - иерархия задач. Корень - главная задача, ветви - подзадачи.

Динамический SQL запрос - надо будет использовать ODBCDatabase (мало что в этом понимаю)?

База ДБФ


глянь вот это - для ДБФ может подойти
http://infostart.ru/profile/10604/projects/1145/


  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Выборка дерева за один проход
Ответ #5 - 19. Сентября 2008 :: 08:22
Печать  
lustin писал(а) 19. Сентября 2008 :: 07:47:
blindvic писал(а) 19. Сентября 2008 :: 07:42:
Справочник одноуровневый. Дерево - иерархия задач. Корень - главная задача, ветви - подзадачи.

Динамический SQL запрос - надо будет использовать ODBCDatabase (мало что в этом понимаю)?

База ДБФ


глянь вот это - для ДБФ может подойти
http://infostart.ru/profile/10604/projects/1145/




Спасибо.
Установил Microsoft OLE DB Provider for Visual FoxPro 9.0. Обработка выдает ошибку:
Код
Выбрать все
РезультатСоединения = _Соединение.Соединение(СтрокаСоединения);
{D:\НЕСТАНДАРТНОЕ.ERT(155)}: FAILED! IDataInitialize::GetDataSource(): Формат строки инициализации не соответствует спецификации OLE DB. 


Код
Выбрать все
	СтрокаСоединения = "Provider=VFPOLEDB.1;Deleted=Yes;Data Source="
	+ КаталогИБ() + ";Mode=ReadWrite;Extended Properties="";User ID="";"+
	"Password="";Mask Password=False;Collating Sequence=MACHINE;DSN="""; 

  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Выборка дерева за один проход
Ответ #6 - 19. Сентября 2008 :: 08:31
Печать  
Нашел. Исправил. Работает.
http://www.1cpp.ru/forum/YaBB.pl?num=1148038411/28#28
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Выборка дерева за один проход
Ответ #7 - 19. Сентября 2008 :: 09:39
Печать  
Лучше при развороте получать подчиненные.
при создании ветки добавлять виртуальный элемент. чтобы при развороте система лезла в БД искала подчиненные, если нет - виртуальный грохается. так можно сколько угодно уровней вложенности. по такому принципу кажется 8-ка работает.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать