Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как ускорить выполнения функционального запроса / 11 сообщений из 11, страница 1 из 1
30.11.2015, 13:20
    #39116267
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
В общем мне нужно что бы по набору данных в одно поле формы отфильтровывались записи в самой форме. С фильтром не работал не знаю как. Я сделал функцию в которую передаются все фильтруемые значения, а она уже решает - показывать запись или нет.
Но в результате на 25 тысяч записей она очень медленна. Не подскажет кто другой способ?
...
Рейтинг: 0 / 0
30.11.2015, 14:15
    #39116314
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
1121,

Код: 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.
Function OtborFio(FF, II, OO, DD)
   Dim FunStrok, F, I, O As String
   Dim D As Date
   Dim Rez As Boolean
   
   Rez = True
   F = ""
   I = ""
   O = ""
   
   FunStrok = UCase(PazyentyOtbor_FioSokr())
   
   If Len(FunStrok) >= 1 Then
      F = Left(FunStrok, 1)
   End If
   If Len(FunStrok) >= 2 Then
      I = Right(Left(FunStrok, 2), 1)
   End If
   If Len(FunStrok) >= 3 Then
      O = Right(Left(FunStrok, 3), 1)
   End If
   
   If UCase(Left(FF, 1)) <> F Then Rez = False
   If Rez And UCase(Left(II, 1)) <> I Then Rez = False
   If Rez And UCase(Left(OO, 1)) <> O Then Rez = False
   
   If Not IsNull(PazyentyOtbor_FDataRog()) Then
     D = PazyentyOtbor_FDataRog()
     If Rez And DD <> D Then Rez = False
   End If
   
   OtborFio = Rez
End Function
...
Рейтинг: 0 / 0
30.11.2015, 14:24
    #39116328
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
Так у тебя не одна, а целых три функции.... Не приводи своего решения, лучше, на словах объясни ТЗ. А заодно покажи таблицы и запрос
...
Рейтинг: 0 / 0
30.11.2015, 14:34
    #39116339
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
Таблица Фамилия Имя Отчество и дата рождения и куча всего к ним. записей от 25-50 тысяч
ТЗ - нужно максимально упростить поиск людям не владеющим ПК
Как вариант в поле формы они Например вводят "КАВ" первая буква фамилия, вторая имя, третья отчество.
В форме должны отфильтроваться записи начинающиеся с этих букв. Как программно изменять фильтр формы я не знаю.
Сделал так как приведено выше, но оно медленно работает.
Как вариант подскажите как программно пользоваться фильтром формы, быстрее должно работать.
...
Рейтинг: 0 / 0
30.11.2015, 14:38
    #39116345
Rivkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
В догонку. Функция написана очень небрежно, непродуманно. Возвращать будет неопределенные и неправильные значения. И все потому, что типы передаваемых параметров не прописаны. А значит, они вариант, а значит, они вполне могут получить null и все строковые функции будут сравнивать несравнимые велечины, возвращая черт знает что!
...
Рейтинг: 0 / 0
30.11.2015, 14:39
    #39116351
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
Rivkin Dmitry,

Это я хотел исправить уже в конце
...
Рейтинг: 0 / 0
30.11.2015, 15:26
    #39116410
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
antipod,

авторпо набору данных в одно поле формы
вы считаете, что это упростит выбор?
-----------уверена на 100 %, что усложнит
кто-то обязательно наберет только буквы фамилии

должно быть 3 поля по 1 символу или более
а далее
Код: sql
1.
 fam like p1 & "*" and imja like p2 & "*" and otch like p3 & "*"



и функции не надо (конечно строка будет немного сложнее --учитывать имя формы и имена полей)
...
Рейтинг: 0 / 0
02.12.2015, 14:32
    #39118428
antipod
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
Стал переделывать форму на работу с фильтром, столкнулся с другой проблемой.
Фильтр формируется в двух событиях формы, попытался прямо в модуле формы написать процедуру общую для обоих событий, чето не получилось. MsgBox проверочный не срабатывает изменений никаких нет
...
Рейтинг: 0 / 0
02.12.2015, 14:53
    #39118467
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
antipod,
кому-то объяснял-осталась:гляньте, может что навеет:
...
Рейтинг: 0 / 0
02.12.2015, 17:13
    #39118647
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
Ещё вариант:
Одиночная форма с источником таблица, с заданной в свойствах, сортировкой по фамилии
добавить кнопку "показатьВсе" и свободное поле "поиск"
после набора символов в "поиск" будет производится поиск в указанном поле и курсор возвращаться в конец набранного
(обычно поиска по одному полю "фамилия" достаточно-однофамильцев обычно не много и выбрать из 3-4 отобранных не сложно)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub показатьВсе_Click()
DoCmd.ShowAllRecords
Me.OrderByOn = True
Me.поиск = ""
End Sub

Private Sub поиск_GotFocus()
Me.поиск.SelStart = Len(Me.поиск.Text)
End Sub

Private Sub поиск_KeyUp(KeyCode As Integer, Shift As Integer)
DoCmd.ApplyFilter , "Фамилия like'" & Me.поиск.Text & "*'"
End Sub
...
Рейтинг: 0 / 0
02.12.2015, 20:32
    #39118795
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как ускорить выполнения функционального запроса
antipod, посмотри этот пример 16941861 . Там форма с фильтром, как пример...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как ускорить выполнения функционального запроса / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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