powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сохранить пользовательские сортировки?
2 сообщений из 27, страница 2 из 2
Как сохранить пользовательские сортировки?
    #32434243
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Виктор авторпрограммист - даже в беседе проводишь обработку возможных ошибок
и смех и грех, тяжело по жизни (в общении) когда думаешь на VB и TSQL, не поверишь даже сны снятся в рамках контроля целостности данных ))


2 ALL
Затронутая проблема не давала мне спокойно жить все празники и вот к чему я пришел.

1. при запуске ACCESS 2003 есть нудное предостережение, что не установив
JET SP8 будут проблемы с фильтрами. Я несказанно обрадовался и стал качать с надеждой что замена ядра может поможет и ACCESS 2002 - фиг не помогает.
(вариант с акксесс 2003 буду тестить сегодня)

2. Решил что если программно заменять клиентский фильтр на серверный то проблем с суммовыми полями быть не должно да и скорость не должна упасть

Вот что получилось:
ADP, ACCESS 2002
замена клиентского фильтра на серверный:

Код: plaintext
1.
2.
3.
4.
5.
'в форму на событие применение фильтра (если фильтры сохраняются то и на загрузку)'


Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)
Call SET_serverfilter(Me)
End Sub



Код: plaintext
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.
'В общий модуль'
Option Compare Database

Public Sub SET_ServerFilter(ByRef FRM As Form)
Echo False

Dim SF As String
SF = FRM.Filter

If SF =  "" Or FRM.FilterOn = False Then              ''" 
    FRM.ServerFilter =  ""                                   ''"        
    FRM.RecordSource = FRM.RecordSource
    Echo True
    Exit Sub
End If

SF = Replace(FRM.Filter, Chr( 34 ),  "'", , , vbTextCompare)                            
'не стал заморачиваться с незаменой кавычек и ALIKE внутри других кавычек,   но думаю что для начала и так сгодится " 
SF = Replace(SF,  " ALike " ,  " Like " , , , vbTextCompare)
'В Аксесс 2003 исправлена эта ошибка - там ставится имя таблицы '
If Access.Version <>  "11 . 0 " Then SF = Replace(SF, FRM.Name &  "." ,  "", , , vbTextCompare)


If Trim(FRM.ServerFilter) = "  " Or IsNull(FRM.ServerFilter) Then
    FRM.ServerFilter = SF
Else
    FRM.ServerFilter = FRM.ServerFilter & "  AND  " & SF
End If
FRM.Filter = " "
FRM.RecordSource = FRM.RecordSource
Echo True
End Sub


проверено и работает при источнике данных таблице, SQL строке, представлении
не будет работать с хр.процедурой

В таком варианте работают суммовые поля при использовании фильтров.
для оценке скорости брал таблицу с 300 000 записей - я считаю что это много для вывода в форму скорость до 2 сек.
...
Рейтинг: 0 / 0
Как сохранить пользовательские сортировки?
    #32434301
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самоисправляюсь:

Код: plaintext
1.
[SRC]'В Аксесс 2003 исправлена эта ошибка - там ставится имя таблицы '
If Access.Version <>  "11 . 0 " Then SF = Replace(SF, FRM.Name &  "." , "", , , vbTextCompare)


заблуждался будет правильно так

'В общий модуль'
Option Compare Database

Public Sub SET_ServerFilter(ByRef FRM As Form)
Echo False

Dim SF As String
SF = FRM.Filter

If SF = "" Or FRM.FilterOn = False Then ''"
FRM.ServerFilter = "" ''"
FRM.RecordSource = FRM.RecordSource
Echo True
Exit Sub
End If

SF = Replace(FRM.Filter, Chr(34), "'", , , vbTextCompare)
'не стал заморачиваться с незаменой кавычек и ALIKE внутри других кавычек, но думаю что для начала и так сгодится "
SF = Replace(SF, " ALike ", " Like ", , , vbTextCompare)
'Если в источнике данных не имя объекта а SQL строка то'
If frm.recordsource like "*SELECT*" Then SF = Replace(SF, FRM.Name & ".", "", , , vbTextCompare)


If Trim(FRM.ServerFilter) = "" Or IsNull(FRM.ServerFilter) Then
FRM.ServerFilter = SF
Else
FRM.ServerFilter = FRM.ServerFilter & " AND " & SF
End If
FRM.Filter = ""
FRM.RecordSource = FRM.RecordSource
Echo True
End Sub[/SRC]
...
Рейтинг: 0 / 0
2 сообщений из 27, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как сохранить пользовательские сортировки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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