Я предполагаю, что Вы находитесь на Vista с помощью VS2008? В этом случае я думаю, что опция FOS_PICKFOLDERS используется при вызове диалогового окна файла Vista IFileDialog. Я боюсь, что в.NET кодируют, это включило бы много непростого кода P/Invoke interop для получения работы.
В Oracle 11gR2 они поддерживают рекурсию в общих табличных выражениях (то, что большинство людей Oracle называют факторингом подзапросов, т.е. предложение WITH
). Поскольку это метод ANSI, он должен быть более портативным.
Том Кайт пишет о рекурсивном факторинге подзапросов в выпуске журнала Oracle от 9 ноября .
Если вам нужны иерархические запросы к базам данных, которые не поддерживают факторизацию рекурсивных подзапросов (см. ответ APC ), одна очень низкотехнологичная альтернатива - закодировать иерархию в отдельный ключ. Конечно, это будет работать только в том случае, если вы сможете контролировать процесс обновления таблицы и переписывать ключ после родительских обновлений.
Например:
FLAT_HIER_ID NODE_ID PARENT_NODE_ID
~N1 N1
~N1~N2 N2 N1
~N1~N2~N3 N3 N2
~N1~N2~N4 N4 N2
Не очень элегантно, но дает вам маршрут для запроса.
Другой (возможно, лучше) вариант - использовать метод « Модель вложенного набора ». Это метод, используемый в Fogbugz для обработки запросов в подкадрах в MSSQL, MySQL и MS Access.
Модель объяснена по адресу:
http://www.developersdex.com/gurus/articles/112.asp
Использование метода в Fogbugz описано по адресу:
http: //www.fogcreek. com / FogBugz / blog / post / Subcases-and-Hierarchy.aspx