powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Тормоза для tree-view?
3 сообщений из 3, страница 1 из 1
Тормоза для tree-view?
    #32412703
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для mdb файла сделано дерево, в котором список основан на запросе:
SELECT *
FROM ПланСчетов
WHERE (((ПланСчетов.lvl)=1))
ORDER BY ПланСчетов.lvl, CLng(GetEndCode([Код]));

В таблице "ПланСчетов" поля: "ключ, код, название, lvl".

Соответственно "+" для неоткрытой ветки "-" для открытой
с процедурой обработки для "Нажатия кнопки":

Private Sub Select_Click()
Dim strSQL As String
If Me.Select = "+" Then
MainCode = Me.Код
If MainCode = "8" Then
Form_фрмПланСчетов.кнДобГруппу.Enabled = False: Form_фрмПланСчетов.кнДобЗапись.Enabled = False: Form_фрмПланСчетов.кнУдалЗапись.Enabled = False
Else
Form_фрмПланСчетов.кнДобГруппу.Enabled = True: Form_фрмПланСчетов.кнДобЗапись.Enabled = True: Form_фрмПланСчетов.кнУдалЗапись.Enabled = True
End If
GroupCode = GroupCode & "'" & Me.Код & "',"
strSQL = "select * from ПланСчетов where ([код] in (" & Left(GroupCode, Len(GroupCode) - 1) & ") or [код] like '" & Me.Код & "/*') and lvl<=" & Me.lvl + 1 & " order by lvl, Clng(GetEndCode([Код]))"
Me.RecordSource = strSQL
ElseIf Me.Select = "-" Then
GroupCode = Left(GroupCode, InStr(GroupCode, "'" & Me.Код & "',") - 1)
MainCode = IIf(Me.lvl = 1, "", DLookup("Код", "ПланСчетов", "lvl=" & Me.lvl - 1 & " and код like '" & GetBeginCode(Me.Код) & "*'"))
If Me.lvl = 1 Then
strSQL = "select * from ПланСчетов where lvl=1 order by [lvl], Clng(GetEndCode([Код]))"
Me.RecordSource = strSQL
Else
strSQL = "select * from ПланСчетов where lvl<=" & Me.lvl & " and ([Код] in (" & Left(GroupCode, Len(GroupCode) - 1) & ") or [код] like '" & GetBeginCode(Me.Код) & "/*') order by lvl, Clng(GetEndCode([Код]))"
Me.RecordSource = strSQL
End If
End If
On Error Resume Next
CurrentDb.QueryDefs("q_form").SQL = strSQL
On Error GoTo 0
End Sub

Где в св-вах поля для "Данные" =GetStructure([Код])

А код:

Function GetStructure(sInd As String) As String
If Nz(DLookup("Код", "ПланСчетов", "Код like '" & sInd & "/" & "*' and Код<>'" & sInd & "'"), "") <> "" And sInd <> MainCode Then
GetStructure = "+"
ElseIf Nz(DLookup("Код", "ПланСчетов", "Код like '" & sInd & "/" & "*' and Код<>'" & sInd & "'"), "") = "" Then
GetStructure = ""
Else
GetStructure = "-"
End If
If InStr(GroupCode, "'" & sInd & "',") <> 0 Then GetStructure = "-"
End Function

Проблема заключается в том, что tree-view оЧЧЧень долго отображает записи.
Можно ли этот код как-нибудь оптимизировать, чтобы он работал побыстрее?
Подскажите, пожалуйста.
P.S. Может конечно и коряво объяснил, но уж извиняйте, как смог :-)
...
Рейтинг: 0 / 0
Тормоза для tree-view?
    #32412973
Фотография Serafim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у Вас тормозит именно вывод на экран - а не выполнение запроса
DoCmd.Echo False -
--заполнение или перестройка tree-view
DoCmd.Echo True
мне это помогло

Удачи
...
Рейтинг: 0 / 0
Тормоза для tree-view?
    #32412987
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое, сейчас попробую!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Тормоза для tree-view?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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