powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / sql и Treeview
19 сообщений из 44, страница 2 из 2
sql и Treeview
    #39661890
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, в таком случае зачем мучить дерево? Не проще сделать запросы из таблицы? Дерево же как-то заполняется из таблицы? Что от выборки потом требуется?
Кстати наборы ( Recordset ) существуют разные. Есть в том числе иерархические .
...
Рейтинг: 0 / 0
sql и Treeview
    #39661909
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургSerg197311, в таком случае зачем мучить дерево? Не проще сделать запросы из таблицы? Дерево же как-то заполняется из таблицы? Что от выборки потом требуется?

Ну я ж писал.... в ноду дерева будет тыкать пользователь и таким образом задавать тот набор записей( изделие целиком или одна из его сборочных единиц любого уровня вложенности) по которым он хочет сделать выборку
А требуется от выборки потом быть выгруженной в Ексель .... В самой базе эта выборка никак использоваться не будет.... пока по крайней мере
...
Рейтинг: 0 / 0
sql и Treeview
    #39661914
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургSerg197311, в таком случае зачем мучить дерево?....Действительно,зачем??Может как-то по-другому (не дерево)
...
Рейтинг: 0 / 0
sql и Treeview
    #39661920
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuПанургSerg197311, в таком случае зачем мучить дерево?....Действительно,зачем??Может как-то по-другому (не дерево)
Гммм.... А как тогда? И самый главный момент - чтоб не все переделывать?
...
Рейтинг: 0 / 0
sql и Treeview
    #39661931
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, я пытаюсь тебя подвести к мысли (я не знаю насколько у тебя сложно всё), что не надо всё дерево строить (только слой который раскрыл пользователь). Ноду которую кликнул пользователь использовать как вершину выборки и от неё создавать набор/ы записей. И эти наборы отправлять в Excel. На долю TreeView оставить только представительскую функцию - посмотреть/выбрать запись.
...
Рейтинг: 0 / 0
sql и Treeview
    #39661932
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим форма со списком где отображаются изделия и несколькими(сколько надо)зависимыми списками:"сборочные единицы" , "детали" (и т.д. все с мультивыбором) после обновления которых выгружать выбранное
...
Рейтинг: 0 / 0
sql и Treeview
    #39661936
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuДопустим форма со списком где отображаются изделия и несколькими(сколько надо)зависимыми списками:"сборочные единицы" , "детали" (и т.д. все с мультивыбором) после обновления которых выгружать выбранное
Можно и так..... нос моей точки зрения дерево - удобней и наглядней для пользователя. Тем более, что я смог сделать все более - менее приемлемым образом работающим. На это переходить буду только если встречу сверхнеобходимую задачу, которую через дерево решить не получится
...
Рейтинг: 0 / 0
sql и Treeview
    #39661938
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургSerg197311, я пытаюсь тебя подвести к мысли (я не знаю насколько у тебя сложно всё), что не надо всё дерево строить (только слой который раскрыл пользователь). Ноду которую кликнул пользователь использовать как вершину выборки и от неё создавать набор/ы записей. И эти наборы отправлять в Excel. На долю TreeView оставить только представительскую функцию - посмотреть/выбрать запись.
Да, пожалуй так конечно будет правильней.... Со временем перепишу функции загрузки дерева и обработки кликов на нем.... Но пока - оно работает))
...
Рейтинг: 0 / 0
sql и Treeview
    #39661942
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ААААА!!! я вопроса не понял!!!! Конечно - с самого дерева только код узла берется!!!! а выборки по таблице, а не по рекордсету дерева!!!! я чтото и подумать не мог чтобы по самому рекордсету дерева лазить....
...
Рейтинг: 0 / 0
sql и Treeview
    #39661949
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а поискать слабо только без переделок навряд-ли
...
Рейтинг: 0 / 0
sql и Treeview
    #39661959
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
не слабо..... Но - зачем? Какие реальные преимущества это может мне дать? или от каких бед уберечь?
...
Рейтинг: 0 / 0
sql и Treeview
    #39661998
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,
Затем что, предложили несколько вариантов без дерева,но Вы хотите именно с ним,а на мой взгляд так поставленную задачу не решить,поэтому поиск Вам в руки и ничего такого,как Вы себе придумали там нет-может быть это убедит отказаться (или использовать его только для получения корневой ноды,как советовалось еще в начале топика)от использования дерева-обратите свой взгляд на другие средства Акса
...
Рейтинг: 0 / 0
sql и Treeview
    #39662001
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
Я очень извиняюсь.... но я 4 сообщения назад подтвердил, что делаю именно так.....
...
Рейтинг: 0 / 0
sql и Treeview
    #39662067
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,
Держи, сам с этим протрахался и для 2000 и для 2008 . В последнем проще есть новые возможности.

Код: sql
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.
Table: Key Char(15), Parent Char(15), text nVarChar(100)

 1. 
SELECT a.*, b.parent, b.text FROM 
   (select rank=count(*), a1.[key]
   from Yourt_table a1, your_table a2
   where a1.[key] >= a2.[key]
   group by a1.[key]) a
   LEFT JOIN your_table b on a.[key] = b.[key]

2.
SELECT  tree.real_key, tree.parent, tree.text from 
(select key_, key_ AS real_key, parent, text, 1 as xParent from your_table 
	WHERE key_ in (select parent from your_table) 
UNION ALL
select a.key_, b.key_ AS realKey,b.parent, b.text, 2 as xparent from
(select key_, parent, text from your_table 
	WHERE key_ in (select parent from your_table)) a
	LEFT JOIN (select key_, parent, text from your_table) b
	ON a.key_ = b.parent) tree
 ORDER BY cast(replace(tree.key_,'_','') AS int), cast(replace(tree.parent,'_','') AS int), tree.text


3. 
WITH testEnum ( text,[key], parent,  EnumNr, sort )
AS 
(Select text, [key], parent, 1,CONVERT(varchar(8000), [key]) from your_table e WHERE [key] = '5_'
	UNION ALL
Select e.text, e.[key], e.parent,  enumNr + 1,RTRIM(Sort)+ '\'+e.[key] from your_table as e
JOIN testEnum d ON e.[parent] = d.[key]
)
SELECT  REPLICATE('   ', EnumNr)+Text,[key], parent, EnumNr 
FROM testEnum ORDER BY sort
go
...
Рейтинг: 0 / 0
sql и Treeview
    #39662188
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы таки добавил в эту самую древесную структуру поле типа depth(уровень вложения, начиная с 0), чтобы дерево быстрее строить можно было. Насчет получения всех детей, можно как-то так делать(Не тестировал особо):

Код: 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.
Public Function getChildren(ByVal parentIds As String, ByVal tblName As String) As String
    Dim sql As String
    Dim result As String
    Dim result2 As String
    
    result = vbNullString
    getChildren = vbNullString
    
    sql = "SELECT id FROM " & tblName & " WHERE pid IN(" & parentIds & ")"
    
    result = getValuesFromSQL(sql)
    If Len(result) > 0 Then
        result2 = getChildren(result, tblName)
    End If
    
    If Len(result2) > 0 Then
        result = result & "," & result2
    End If
    
    getChildren = result
End Function

Public Function getValuesFromSQL(ByVal sql As String) As String
    Dim db As dao.Database
    Dim rst As dao.Recordset
    
    Dim result As String
    
    result = vbNullString
    getValuesFromSQL = vbNullString
    
    Set db = CurrentDb
    Set rst = db.OpenRecordset(sql)
    With rst
        Do Until .EOF
            result = result & "," & .Fields(0)
            .MoveNext
        Loop
    End With
    
    If Len(result) > 0 Then
        getValuesFromSQL = Right(result, Len(result) - 1)
    End If
    
End Function



С другой стороны, если у вас такие запросы часто встречаются и хотелось бы проще выборку сделать и возможно быстрее, почему бы не добавить всем "потомкам" путь до предка 0 уровня?
Просто текстовое поле с кодами всех предков - "1,2,3,10,55". И тогда все это легко выводилось бы запросом вида:

Код: sql
1.
2.
3.
SELECT id
FROM tbl
WHERE path LIKE IIf(depth=0, '1,*', '*,1,*')



где depth - уровень вложения предка, 1 - код предка, из которого выбирают всех детей. Из плюсов - быстрая выборка, из минусов - сложности с перемещением большого числа элементов из одной папки в другую. Ну и при заведении придется добавить одну лишнюю строчку.
...
Рейтинг: 0 / 0
sql и Treeview
    #39662260
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valerii,
Я не большой спец, но это точно можно применить в Access? А то операторы там некоторые незнакомы мне совсем....
...
Рейтинг: 0 / 0
sql и Treeview
    #39662264
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озверин,
Спасибо огромное!
Дерево сейчас строится быстро.... 2-3 тысячи узлов менее секунды - меня устраивает.
про дополнительное поле с текстовой глубиной - отличная идея! позволяет не переделывать структуру базы, а это поле можно заполнить скриптом для всех уже имеющихся записей.... причем сделать это в любой момент, когда понадобится...> переделать поисковые запросы - вообще мгновенно.
буду иметь ввиду, но пока переделывать у себя не буду. Выполнение статистического запроса за 5 сек мне кажется удовлетворительным...
...
Рейтинг: 0 / 0
sql и Treeview
    #39662326
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuПанургSerg197311, в таком случае зачем мучить дерево?....Действительно,зачем??Может как-то по-другому (не дерево)Serg197311sdku,
Я очень извиняюсь.... но я 4 сообщения назад подтвердил, что делаю именно так.....'в смысле без дереваSerg197311Дерево сейчас строится быстро.... 2-3 тысячи узлов менее секунды - меня устраивает.
правда на прокрутку и поиск уходит не одна минута, но это ерунда (Вы уж определитесь-список с результатами поиска не наш метод)
...
Рейтинг: 0 / 0
sql и Treeview
    #39662363
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku, так что вы сказать то хотите???
Что у меня все не так,неправильно, не работает, работать не будет,неудобно или еще что?
То что вы больше меня в программировании понимаете, вы уже продемонстрировали, полностью согласен.
Но не могли бы вы по делу высказываться? или не высказываться совсем.
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / sql и Treeview
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]