powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Combobox+поиск в табличной форме
25 сообщений из 40, страница 1 из 2
Combobox+поиск в табличной форме
    #39799669
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Столкнулся с неожиданной проблемой. То ли это глюк Access, то ли я что то не так делаю.
Суть в следующем:
В табличной форме товар выбирается из справочника. По мере ввода данных происходит "фильтрация" списка.
В ленточной форме это работало на отлично, но появилась необходимость перевести это в табличный режим.
Казалось бы все просто. Поменял формат и все готово. Не тут то было...
Если в поле ввести ошибочно символ и удалить его, то combobox категорически не хочет обновляться.
Для наглядности прикрепил образец. Может дело в моей версии Access.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799805
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман,
Работа поляСоСписком мне представляется так:
-щелчок на кнопке со стрелкой открывает список
-выбираем значение в списке и оно заносится в поле
-если заполнять поле с клавиатуры раскроется список с выделенным значением, соответствующим введенному символам (а если отсортировать источник по наименованию,то я не вижу какой-либо необходимости в "фильтрации" списка)
Я бы решал задачу так (ввод данных очень прост)
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799807
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:вернее не раскроется,а его нужно раскрыть (или использовать drop на изменении поля)
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799821
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Вся фишка именно фильтре. Справочник может иметь до 5 тыс. наименований и не факт, что наименование товара имеет четкую структуру написания. Кто то введет сиг. БОНД, а другой сигареты БОНД.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799847
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаманsdku,
Кто то введет сиг. БОНД, а другой сигареты БОНД.Combo и существует для того чтобы этого не допустить.Вы же пытаетесь "обдурить" полеСоСписком работа которого очень неплохо продумана создателями ACCESS-покопайте в сторону добавления в справочник новых значений (событие NotInList) с проверкой уже существующих и вновь вводимых на подобие (может не надо вводить новое наименование)
Посмотрите это 21852922 -там есть много полезностей по работе с Combo
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799863
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманВся фишка именно фильтре. Справочник может иметь до 5 тыс. наименований и не факт, что наименование товара имеет четкую структуру написания. Кто то введет сиг. БОНД, а другой сигареты БОНД.

я отказался от комбо, у меня обычное поле для фильтра, а в запросах условие типа Like "*" & [Поле1] & "*"
- очень удобно и просто, пользователь может указать сиг*бонд и найдется и так и эдак...
- после каждого символа я тоже не фильтрую, у меня есть справочники где и 20 000 и 80 000 позиций и в этом случае это будет трэш...
- юзер нажимает после ввода Enter и тогда всё подходящее выдается в список, после выбора в списке я получаю в столбцах все что нужно и ключ и штри-код и наименование и цены...
Еще можно в запросе сформировать составное поле типа полного наименования - Артикул + наименование + штрихкод и фильтр поставить именно на него, тогда по барабану что ишет юзер: это может быть последние 4-5 символов штрихкода, часть артикула и часть наименования, весь артикул и т.д.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799866
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да, в предварительный список отбора может попасть пару тройку лишних позиций товара, конкретный товар опять же выбирает юзер (как бы два шага при выборе - грубый поиск + выбор конкретной позиции)
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799902
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagя отказался от комбо, у меня обычное поле для фильтра, а в запросах условие типа Like "*" & [Поле1] & "*"
- очень удобно и просто, пользователь может указать сиг*бонд и найдется и так и эдак...
- после каждого символа я тоже не фильтрую, у меня есть справочники где и 20 000 и 80 000 позиций и в этом случае это будет трэш...
я действую аналогично

причем если точно знаю порядок слов, то применяю звездочку
алм*круг найдет алмазные круги, но не найдет круги алмазные

поэтому ввела вариант с пробелом (алм круг)
--формируется 2 условия
алм*круг и круг*алм
или через и , типа
naim like "*круг*" and naim like "*алм*"
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799922
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,
В принципе поиск у меня такой же. Только я задваиваю наименование Артикул + наименование + наименование + штрихкод
Тогда Вино сухое можно искать как вин*сух так и сух*вин.
По поводу обработки события после каждой буквы согласен, при большом объеме это будет жестко.
Перенес событие поиска и фильтра с изменения на отсутствие в списке и добавил игнор ошибки.
Теперь после набора жму интер и получаю все совпадения.
СПАСИБО!!!
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799948
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманТогда Вино сухое можно искать как вин*сух так и сух*вин.
но могут быть варианты при большом количестве наименований когда под критерий отбора попадут товары совсем не те что надо-и запрос или отчет выдаст неверный результат
(может разбить на группы)
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39799983
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Использование нескольких * существенно сужает список совпадений.
Для поиска Напиток ароматизированный, изготовленный на основе пива, пастеризованный "Сет энд Райлис Гараж Хард Лимон"
достаточно ввести пивн*гар*лим или лимон*гараж и с вероятностью 99% найдется то что нужно.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800003
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман,

Прикольно выкрутился... И комбо отрабатывает, если из списка, и как текстовое поле работает если не из списка, и фишка с дублем наименования зачётная
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800078
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шамандостаточно ввести пивн*гар*лим или лимон*гараж и с вероятностью 99% найдется то что нужно.А 1%,который остался вылезет,по закону подлости,в самый ненужный момент,когда база будет наполнена большим количеством информации и ошибку искать будет ооочень трудно.А впрочем хозяин-барин - делайте как Вам нравится
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800110
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuА 1%,который остался вылезет,по закону подлости,в самый ненужный момент,когда база будет наполнена большим количеством информации и ошибку искать будет ооочень трудно.А впрочем хозяин-барин - делайте как Вам нравитсяТут ошибок быть не может. Наоборот, получился шикарный функционал. Попробуйте сами.
Ищем водку Водка "Русь матушка премиум" 0,7 л: вбиваем рус*мат*7 , жмем Enter и получаем желаемое. Уж из 2 позиций пользователь сможет выбрать нужное.
Так же, можно делать подбор по мере фильтрации.
Например надо найти пиво Балтика №7 производитель Самара объем 1,35л
Набирали пив*балт и нажали Enter. Выпал довольно большой список. Уточняем запрос *7. Список уменьшился. Добавляем производителя *самар и добиваем литражом *1. В результате получаем всего две строки.
Ну и в заключении ищем батончик Кит-Кат: кит*кат
Достигнуть такого результата стандартным полем со списком Access просто нереально.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800179
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Небольшое дополнение для обновления списка товаров после неудачного поиска
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private Sub Товар_NotInList(NewData As String, Response As Integer)
Dim f
f = Me.Товар.Text
Me.Товар.RowSource = "SELECT Товар_tbl.* FROM Товар_tbl WHERE ((([Наименование] & [Наименование]& [Наименование]) Like '*" & f & "*'));"
    
    If Товар.ListCount = 0 Then
    Me.Товар = Null
    Me.Товар.Requery
    MsgBox "По введенному Вами запросу ничего не найдено!", vbCritical, "Результат поиска"
    Me.Товар.RowSource = "SELECT Товар_tbl.* FROM Товар_tbl;"
    End If
    
Response = acDataErrContinue 'отключить сообщение системы об ошибке
End Sub
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800192
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впечатляет,однако...
ШаманНебольшое дополнение для обновления списка товаров после неудачного поиска
Код: vbnet
1.
...WHERE ((([Наименование] & [Наименование]& [Наименование]) Like '*" & f & "*'));"..
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800202
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Экспериментировал ;)
Результат показал что вполне достаточно дубля наименования.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800233
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман,
Я не о количестве дублей,а об этом:
Код: vbnet
1.
2.
3.
4.
?"дерево"like"*вод*"
False
?"дерево" & "дерево"like"*вод*"
True 
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800239
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
А, так это просто пример. В реале все разделено пробелами.
Кстати анекдот напомнил
Звонок на радио:
- Здравствуйте…вы не могли бы поставить мне и моей девушке песню Меладзе
про Стошу Говнозада…?
- А что это за песня?
- Да вот эту «Сто шагов назад…. тихо на пальцах…»
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800322
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё уже давно придумано 200373
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800329
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШаманИщем водку Водка "Русь матушка премиум" 0,7 л: вбиваем рус*мат*7 , жмем Enter
Звездочку вбивать сложнее, поэтому я в поисковой строке заменяю пробелы на звездочки автоматически, а пользователю долстаточно ввести "рус мат 7" для получения результата, народ доволен.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800333
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinЗвездочку вбивать сложнее, поэтому я в поисковой строке заменяю пробелы на звездочки автоматически, а пользователю долстаточно ввести "рус мат 7" для получения результата, народ доволен.
надо знать последовательность фрагментов...
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800405
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадявсё уже давно придумано 200373 Но пример из данной темы намного проще Вашего, а двойное-тройное повторение наименования в запросе поиска позволяет не задумываться о последовательности фрагментов.

MrShin, Пробел вместо звездочек реально удобнее. Спасибо за совет.
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800624
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаманвадявсё уже давно придумано 200373 Но пример из данной темы намного проще Вашего, а двойное-тройное повторение наименования в запросе поиска позволяет не задумываться о последовательности фрагментов.

MrShin, Пробел вместо звездочек реально удобнее. Спасибо за совет.мой вариант проверенаре временем, разными субд.и ЯП
...
Рейтинг: 0 / 0
Combobox+поиск в табличной форме
    #39800641
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,
Без обид. Не хочу вступать в перепалку чей код лучше.
Одно только поясните что в этом коде вызывает недоверие и что надо проверять временем?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim f
f = Me.Товар.Text
Me.Товар.RowSource = "SELECT Товар_tbl.* FROM Товар_tbl WHERE ((([Наименование]) Like '*" & f & "*'));"
    If Товар.ListCount = 0 Then
    Me.Товар = Null
    Me.Товар.Requery
    MsgBox "По введенному Вами запросу ничего не найдено!", vbCritical, "Результат поиска"
    Me.Товар.RowSource = "SELECT Товар_tbl.* FROM Товар_tbl;"
    End If
Response = acDataErrContinue
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Combobox+поиск в табличной форме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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