|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
Добрый час! Подскажите как создать запрос в таблице иерархической, что в запросе вывести все подчиненные подразделения любого из выбранного? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 01:57 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
vmag, нет ( ... мне по сути в другом запросе нужно вывести всех сотрудников к примеру 1 отдела, те сразу двух отделений ... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 02:10 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
Вот так выглядит таблица ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 02:15 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
JDV, Как мне фильтрануть таблицу по полю ID_podrazdelenie ... исходя из того ... чтоб я выбрал старшее подразделение ... а все сотрудники его и его подчиненных вывелись ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 02:17 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
JDV, ну мне лично в ссылке выше понравилась функция от Озверина, которая выдергивает всех детей, остается только написать вторую функцию - выводить дитё в запросе или нет, типа: test_dnk([ID_podrazdelenie]) и поставить на неё условие отбора True, вернется True, сотрудник выведется, нет - значит не выведется... Там у Озверина дети пишутся в строку, возможно удобнее писать будет в массив... Поздненько уже... с утра народ подтянется, может еще чего подскажет, пока можете написать для спецов, сколько уровней вложенности максимальное у вас, наверняка спросят... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 02:56 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
А еще там от Serg197311 можно взять идею - искать от ID_podrazdelenie до верха, так даже быстрее будет... В запрос вставляешь туже же функцию так же, только с двумя параметрами ID_podrazdelenie от сотрудника и ID_podrazdelenie от подразделения, функция возвращает True если идешь от ID_podrazdelenie от сотрудника наверх и натыкаешься на ID_podrazdelenie от подразделения... Собственно в ссылке выше практически набор инструментов для работы с ентой иерархией... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 03:28 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
Смешно... Но там еще и вариант от sdku с DLookUp прокатит в той же функции... 1. ищем по ID_podrazdelenie хозяина, если совпал с искомым, фунция возвращает True и сотрудник печатается 2. если не совпал, то опять идем на п.1 с новым ID_podrazdelenie и опять ищем хозяина. в конце концов упираемся в ноль (это если не входит в подразделение) и функция возвращает False - сотрудник не печатается... В этом варианте будет меньше всего кода... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 03:43 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
Вот пример по последнему варианту, DLookUp проще всего... По умолчанию в форме все сотрудники, нужно выбрать подразделение в верхнем списке... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 05:13 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
vmag, Благодарю! Благодарю! Благодарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 10:39 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
JDV, еще как вариант создать вспомогательную таблицу с полями id, idparent, idchild, idtable (опционально если иерархию нужно прикрутить к нескольком таблицам) по сути это таблица достижимости из одного узла в другой т.Е пример для управления 1 (idparent, idchild), (1,2), (1,3), (1,4), (2,3), (2,4) такая таблица при наличии индексов работает очень быстро, причем как в направлении от корня к листьям так и наоборот обновлять ее можно на триггерах, единственное "но", таблицы с иерархией должны быть довольно редко изменяемыми, орг структура как раз такой и является. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 00:10 |
|
Иерархия в запросе
|
|||
---|---|---|---|
#18+
vmag, Добрый час! Подскажите что не верно .... If Me![fUchetIerarxii] = True Then ' Выражение1: test_dnk([Forms]![frm_head_meropriyatiya]![frm_sub_sql_meropriyatiya];[tbl_podrazdeleniya.ID_podrazdeleniya]) strSQLWhere = strSQLWhere & "([sql_head_planirovanie]![ID_podrazdeleniya] Like '" & test_dnk([Forms]![frm_head_meropriyatiya]![frm_sub_sql_meropriyatiya], [ID_podrazdeleniya]) & "') and " End If В этом месте .... Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
Функция эта Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2021, 13:41 |
|
|
start [/forum/topic.php?fid=45&fpage=10&tid=1609802]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 270ms |
total: | 439ms |
0 / 0 |