Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поле со списком... Опять! / 11 сообщений из 11, страница 1 из 1
29.10.2004, 12:30:56
    #32760816
ДАВИД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
Коллеги !
Суть вопроса...
Есть поле со списком на базе SQL-запроса. При вводе в это поле выпадает список.
Хотелось бы, чтобы при вводе на список накладывался как бы фильтр по введенному выражению, то-есть из всего списка отбирались те позиции, которые соответсвуют введенному (хоть и частично) в поле выражению.
Как это сделать - понятно, НО будет очень медленно работать (если после ввода каждого символа в свойстве KeyPreview , делать
Код: plaintext
.RowSource.requery
Можно ли вообще , чтобы подобная функция работала быстро (хотя бы относительно быстро)

Давид

P.S.
Кажется изложил не очень внятно, извиняюсь.
...
Рейтинг: 0 / 0
29.10.2004, 12:32:48
    #32760822
ДАВИД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
P.P.S.
Access 97, 2000, базы mdb.
...
Рейтинг: 0 / 0
29.10.2004, 12:37:19
    #32760833
scoritt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
А зачем что-то придумывать? В поле со списком работает автозаполнение! Ввёл первую буковку и появилось первое подходящее :))
...
Рейтинг: 0 / 0
29.10.2004, 12:48:29
    #32760874
ДАВИД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
scorittА зачем что-то придумывать? В поле со списком работает автозаполнение! Ввёл первую буковку и появилось первое подходящее :))
УТОЧНЯЮ...
Допустим весь список 500 строк
Вы ввели первую буква "Ф" и у Вас сисок - 100 строк,где все строки начинаются с "Ф". Ввели "Фп" - сисок 20 строк, все начинаются с "Фп" и т.д.
Тоесть фильтр на список.
Ну а автозаполнение ... это тоже хорошо.
...
Рейтинг: 0 / 0
29.10.2004, 13:08:44
    #32760936
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Подрядчик_KeyPress(Cancel As Integer)
 Dim tblT As Variant, dbT As Variant
   Dim fldKod As Variant, fldName As Variant
   Dim strPoisk As String
   Dim strRS As String
   Dim ctlSpisok As Variant
   Set dbT = CurrentDb()
   Set tblT = dbT.TableDefs("Подрядчики")
   Set fldKod = tblT.Fields("КодП")
   Set fldName = tblT.Fields("Наименование подрядчика")
   Set ctlSpisok = Me![подрядчик]
   If Not IsNull(strPoisk) Then
       strRS = "SELECT   " & tblT.Name & "." & fldKod.Name & ",  " & tblT.Name & ".[" & fldName.Name & "] " _
       & "FROM " & tblT.Name & " " _
       & "WHERE ((( " & tblT.Name & ".[" & fldName.Name & "]) Like '*" & Me![подрядчик].Text & "*'));"

ctlSpisok.RowSource = strRS
SendKeys "%{DOWN}", True
 End If

End Sub
Пример работы
Отбор производится с любой частью поля
...
Рейтинг: 0 / 0
29.10.2004, 13:21:22
    #32760963
ДАВИД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
Уважаемый(ая) Ирча!
1. Тот же .recordsorce.requery - только в профиль.
2. В том поле уже есть recordsorce - с "SELECT ..." на 4 строчки из 4-х таблиц с кучей условий по WHERE и HAING ( , а так же большим order...)
При первом входе в поле список отбирается и выпадае за 1,5-2 сек !

Вот такой ПЕРДЕМОНОКЛЬ ...
...
Рейтинг: 0 / 0
29.10.2004, 13:29:12
    #32760978
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
Во временную табличку результаты сложите...
Первые сорок записей выводите, а не 500..
Если Ваш запрос долго считается, то я не могу сказать крекс-пекс-фэкс и ускорить его расчет:-)
...
Рейтинг: 0 / 0
29.10.2004, 13:30:13
    #32760979
Ирча
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
Ну, звиняйте, бананьев нема

Просто у меня тоже очень большой список, а отбирается в лет...
...
Рейтинг: 0 / 0
29.10.2004, 13:43:59
    #32761027
ДАВИД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
НАРОД! не ругайте меня !!!
Дело только в том, чтобы ограничивать выбор из списка для стерто операторов! О!!!
(...извините.)
...
Рейтинг: 0 / 0
29.10.2004, 13:55:26
    #32761062
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
ДАВИДУважаемый(ая) Ирча!
1. Тот же .recordsorce.requery - только в профиль.
2. В том поле уже есть recordsorce - с "SELECT ..." на 4 строчки из 4-х таблиц с кучей условий по WHERE и HAING ( , а так же большим order...)
При первом входе в поле список отбирается и выпадае за 1,5-2 сек !

Вот такой ПЕРДЕМОНОКЛЬ ...
Шарк прав - нужна промежуточная таблица - справочник
...
Рейтинг: 0 / 0
29.10.2004, 16:46:10
    #32761485
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поле со списком... Опять!
Фильтрация формы

работает в улетно

почти как у Ирчи, но сложнее критерий.


при первом входе список.RowSource="" , и не надо тратить время на ожидание - всё равно полный список не нужен.

а ежели like поставить где-нить в первоначальных отборах дак вообще должно быстро быть.

у меня список редко получается больше 10 строк (при 2-3 условиях)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поле со списком... Опять! / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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