Advertisement
Guest User

Untitled

a guest
Sep 14th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ASP 16.22 KB | None | 0 0
  1. <%@ Language=VBScript %>
  2. <%Option Explicit%>
  3. <HTML>
  4. <HEAD>
  5. <META http-equiv="Content-Type" content="text/html" charset="Windows-1251">
  6. <title></title>
  7. <link rel=stylesheet href=/deciweb/cdweb/css/plain.css>
  8. <link rel=stylesheet href=/deciweb/CustomBDO/PPR/CSS/main.css>
  9. <link rel=stylesheet media="print" href="print.css">
  10.  
  11. <script src="lib/jquery-latest.js"></script>
  12. <link rel="stylesheet" href="lib/screen.css" type="text/css" />
  13. <link rel="stylesheet" href="lib/jquery.treeview.css" type="text/css" />
  14. <script type="text/javascript" src="lib/jquery.treeview.js"></script>
  15.  
  16. <script>
  17.   $(document).ready(function(){$("#example").treeview();});
  18. </script>
  19.  
  20. </HEAD>
  21. <style type="text/css">
  22. span {margin-top:0; margin-bottom:0;}
  23. </style>
  24. <BODY style="margin-left: 20; font: 8pt verdana;">
  25. <!--#include file="dbHeader.asp"-->
  26. <%
  27.         const base = "RS"
  28.         const dimention = "UNIT"
  29.         const s = "&nbsp;&nbsp;&nbsp;&nbsp"'&nbsp;&nbsp;&nbsp;&nbsp;
  30.        
  31.        
  32.         Dim treeSQL
  33.         Dim rsTree
  34.        
  35.         Dim treeTable(500,5)
  36.        
  37.         Dim i, n, j
  38.  
  39.         Dim recursionDepth          'Глубина рекурсии
  40.         Dim previouseRecursianDepth 'Глубина рекурсии на предыдущей отрисовке узла
  41.        
  42.         recursionDepth = 0
  43.         previouseRecursianDepth = 0
  44.        
  45.         '
  46.         'Главная рекурсивная функция построения дерева
  47.         'отображает все элементы из массива в PID которых указан parentNodeID
  48.         '
  49.         function printChild (parentNodeID)
  50.             'Увеличиваем счетчик глубины рекурсии на единицу при вызове функции.
  51.             recursionDepth = recursionDepth + 1
  52.            
  53.             'Обходим весь массив
  54.             dim i
  55.             for i = 0 to n-1
  56.                 'Если находим элемент в родителях которого прописан наш parentNodeID
  57.                 if treeTable(i,2) = parentNodeID then
  58.  
  59.                     dim ulCount 'Счетчик открытых <ul>
  60.                     dim k
  61.  
  62.                     'Вычисляем сколько открытых <ul> как разницу м/у глубиной рекурсии на предыдущем шаге минус на текущем
  63.                     ulCount = previouseRecursianDepth - recursionDepth
  64.                    
  65.                     'Если больше нуля, значит мы всплываем и нам нужно закрывать <ul>
  66.                     if ulCount > 0 then
  67.                         for k = 1 to ulCount
  68.                             response.write("</li></ul>" & vbCrlf)
  69.                         next
  70.                     end if
  71.                    
  72.                     DIM mainHtml 'тут формируем что у нас будет выводится на узлах
  73.                     mainHtml = "<a href='?id=" & treeTable(i,1) & "'>" & treeTable(i,3) & "</a>"
  74.                    
  75.                     'Формируем сам узел в зависимости от того есть у него потомки или нет
  76.                     if treeTable(i,4) = "C" then
  77.                         'Если у элемента есть потомки
  78.                         response.write("<li class='closed'><span>" & mainHtml &"</span>"& vbCrlf)
  79.                         response.write("<ul>" & vbCrlf)
  80.                     else
  81.                         'Если потомков нет
  82.                         response.write("<li>" & mainHtml & "</li>" & vbCrlf)
  83.                     end if
  84.  
  85.                     'Тут сохраняем глубину рекурсии для этого шага, чтоб использовать при следующем вызове
  86.                     'для определения погрузились ли мы глубже в рекурсию или всплыли. И величину погружения/всплытия.
  87.                     previouseRecursianDepth = recursionDepth
  88.                    
  89.                     'Вызываем функцию рекурсивно, в качестве parentNodeID передаем ID текущего элемента.
  90.                     printChild treeTable(i,1)
  91.                 end if
  92.             next
  93.             'Выходим из функции, соответсвенно уменьшаем счетчик глубины рекурсии.
  94.             recursionDepth = recursionDepth - 1
  95.         end function
  96.        
  97.         'Запрос для формирования выборки позволяющей построить дерево.
  98.         treeSQL = "SELECT "&base&"."&dimention&".MEM_ORDER AS ORD, "&base&"."&dimention&".MEM_ID AS ID, "&base&"."&dimention&"_TREE.MEM_PID AS PID, "&base&"."&dimention&".MEM_DESC AS NAME, "&base&"."&dimention&".MEM_TYPE AS TYPE FROM "&base&"."&dimention&" INNER JOIN "&base&"."&dimention&"_TREE ON "&base&"."&dimention&".MEM_ID = "&base&"."&dimention&"_TREE.MEM_ID ORDER BY "&base&"."&dimention&".MEM_ORDER"
  99.         Set rsTree = Server.CreateObject("ADODB.Recordset")
  100.         set rsTree = objConnection.Execute(treeSQL)
  101.  
  102.         'Заполняем массив из полученной выборки
  103.         n=-1
  104.         do while not rsTree.EOF
  105.             n=n+1
  106.             treeTable(n,0) = rsTree("ORD")
  107.             treeTable(n,1) = rsTree("ID")
  108.             treeTable(n,2) = rsTree("PID")
  109.             treeTable(n,3) = rsTree("NAME")
  110.             treeTable(n,4) = rsTree("TYPE")
  111.             rsTree.MoveNext
  112.         loop
  113.        
  114.         'Фомируем дерево и подключаем jQuery.treeview
  115.         Response.Write("<ul id='example'>" & vbCrlf)
  116.         printChild 80000000
  117.        
  118.         'Вычисляем сколько осталось незакрытых <ul>
  119.         DIM unclosabeULCount
  120.         unclosabeULCount = previouseRecursianDepth - recursionDepth
  121.        
  122.         'Закрываем все не закрытые <ul>
  123.         for i=0 to unclosabeULCount-1
  124.             Response.Write("</ul>" & vbCrlf)
  125.         next
  126.        
  127.  
  128.        
  129.  
  130. '============= ДАННЫЕ. Запрос:
  131. 'SELECT
  132. '   RS.UNIT.MEM_ORDER AS ORD,
  133. '   RS.UNIT.MEM_ID AS ID,
  134. '   RS.UNIT_TREE.MEM_PID AS PID,
  135. '   RS.UNIT.MEM_DESC AS NAME,
  136. '   RS.UNIT.MEM_TYPE AS TYPE
  137. 'FROM RS.UNIT
  138. '       INNER JOIN
  139. '           RS.UNIT_TREE ON
  140. '               RS.UNIT.MEM_ID = RS.UNIT_TREE.MEM_ID
  141. 'ORDER BY RS.UNIT.MEM_ORDER
  142. '
  143. '============= Данные. Распечатать массив
  144. '
  145. 'for i=0 to n
  146. '   response.write(treeTable(i,0) & " " & treeTable(i,1) & " " & treeTable(i,2) & " " & treeTable(i,3) & " " & treeTable(i,4) & " " & vbCrlf )
  147. 'next
  148. '
  149. '============= ДАННЫЕ. Массив. Пример:
  150. 'treeTable(n,0) = rsTree("ORD") treeTable(n,1) = rsTree("ID")   treeTable(n,2) = rsTree("PID")  treeTable(n,3) = rsTree("NAME") treeTable(n,4) = rsTree("TYPE")        
  151. '0                              1000000                         80000000                        Без учета ЦФО                   R
  152. '0                              1000000                         81132008                        Без учета ЦФО                   R
  153. '1                              80000000                        -1                              Total ЦФО                       C
  154. '2                              81000000                        80000000                        Холдинг Руссоль                 C
  155. '3                              81111000                        81110000                        Производство                    C
  156. '4                              81111100                        81111000                        Добыча (шахта)                  C
  157. '5                              81111110                        81111100                        УГР                             R
  158. '6                              81111120                        81111100                        УПиСУ                           R
  159. '7                              81111130                        81111100                        Проходка                        R
  160. '8                              81111200                        81111000                        Фабрика                         C
  161. '9                              81111210                        81111200                        Переработка                     R
  162. '10                             81111220                        81111200                        Транспортировка и размол        R
  163. '11                             81111230                        81111200                        Сушка                           R
  164. '12                             81112000                        81110000                        Общепроизводственные            C
  165. '13                             81112100                        81112000                        Добыча (шахта)                  C
  166. '14                             81112110                        81112100                        Общешахтные                     R
  167. '15                             81112120                        81112100                        Горноспасательная служба        R
  168. '16                             81112200                        81112000                        Фабрика                         R
  169. '17                             81113000                        81110000                        Вспомогательное пр-во           C
  170. '18                             81113100                        81113000                        Электроподстанция               R
  171. '19                             81113200                        81113000                        Инженерные сети                 R
  172. '20                             81113300                        81113000                        Котельная                       R
  173. '21                             81113400                        81113000                        Буровая установка               R
  174. '22                             81113500                        81113000                        Закладка                        R
  175. '23                             81113600                        81113000                        Железнодор. Участок             C
  176. '24                             81113610                        81113600                        Подвижной Состав                R    
  177. '25                             81113620                        81113600                        Путевое хозяйство               R
  178. '26                             81113630                        81113600                        Подготовка вагонов              R
  179. '27                             81113640                        81113600                        ЖДУ (Общие)                     R
  180. '28                             81114000                        81110000                        Обслуживающие подразделения     C
  181. '29                             81114100                        81114000                        Столовая                        R
  182. '30                             81115000                        81110000                        Общехозяйственные АУП           C
  183. '31                             81115100                        81115000                        ААУ                             R
  184. '32                             81115200                        81115000                        ОГМ (автомобили)                R
  185. '33                             81115300                        81115000                        База МТО                        R
  186. '34                             81115400                        81115000                        ПХЛ                             R
  187. '35                             81115500                        81115000                        Медпункт                        R
  188. '36                             81113700                        81113000                        Автотранспортный участок        R
  189. '37                             81114200                        81114000                        Клуб                            R
  190. '38                             81114300                        81114000                        Музей                           R
  191. '39                             81110000                        81100000                        ОАО ``Илецксоль``               C
  192. '40                             81111300                        81111000                        УОВТ                            R
  193. '41                             81112130                        81112100                        ОГМ                             R
  194. '42                             81116000                        81110000                        Коммерческие расходы (44 сч)    R
  195. '43                             81117000                        81110000                        Услуги на сторону               R
  196. '44                             81100000                        81000000                        Добывающие предприятия          C
  197. '45                             81120000                        81000000                        ООО ``УК ``Руссоль``            C
  198. '46                             81130000                        81132004                        ООО «Руссоль Трейдинг»          C
  199. '47                             81121000                        81120000                        Производство (20 счет)          R
  200. '48                             81122000                        81120000                        Общехозяйственные АУП (26 счет) R
  201. '49                             81123000                        81120000                        Коммерческие расходы (44 сч)    R
  202. '50                             81131000                        81130000                        Общехозяйственные АУП (26 счет) R
  203. '51                             81132000                        81130000                        Коммерческие расходы (44 сч)    R
  204. '61                             81132001                        81132006                        Все ОАО Илецксоль               R
  205. '61                             81132001                        81110000                        Все ОАО Илецксоль               R
  206. '71                             81132002                        81132005                        Все ООО УК Руссоль              R
  207. '71                             81132002                        81120000                        Все ООО УК Руссоль              R
  208. '81                             81132003                        81130000                        Все ООО Руссоль Трейдинг        R
  209. '81                             81132003                        81132007                        Все ООО Руссоль Трейдинг        R
  210. '91                             81132004                        81000000                        Торговые компании               C
  211. '101                            81132005                        81132008                        Холдинг                         C
  212. '111                            81132006                        81132005                        Добывающие предприятия          C
  213. '121                            81132007                        81132005                        Торговые компании               C
  214. '131                            81132008                        -1                              Все элементы                    C
  215.        
  216.  
  217. %>
  218. <!--#include file="dbFooter.asp"-->
  219. </BODY>
  220. </HTML>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement