|
|
|
Тормоза для tree-view?
|
|||
|---|---|---|---|
|
#18+
Для 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. Может конечно и коряво объяснил, но уж извиняйте, как смог :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 20:57 |
|
||
|
Тормоза для tree-view?
|
|||
|---|---|---|---|
|
#18+
Если у Вас тормозит именно вывод на экран - а не выполнение запроса DoCmd.Echo False - --заполнение или перестройка tree-view DoCmd.Echo True мне это помогло Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2004, 10:04 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32412987&tid=1676605]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 398ms |

| 0 / 0 |
