Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
Всем привет.
Столкнулся с неожиданной проблемой. То ли это глюк Access, то ли я что то не так делаю.
Суть в следующем:
В табличной форме товар выбирается из справочника. По мере ввода данных происходит "фильтрация" списка.
В ленточной форме это работало на отлично, но появилась необходимость перевести это в табличный режим.
Казалось бы все просто. Поменял формат и все готово. Не тут то было...
Если в поле ввести ошибочно символ и удалить его, то combobox категорически не хочет обновляться.
Для наглядности прикрепил образец. Может дело в моей версии Access.

К сообщению приложен файл (ТаблФорма.zip - 24Kb) cкачать
10 апр 19, 23:30    [21858846]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
Шаман,
Работа поляСоСписком мне представляется так:
-щелчок на кнопке со стрелкой открывает список
-выбираем значение в списке и оно заносится в поле
-если заполнять поле с клавиатуры раскроется список с выделенным значением, соответствующим введенному символам (а если отсортировать источник по наименованию,то я не вижу какой-либо необходимости в "фильтрации" списка)
Я бы решал задачу так (ввод данных очень прост)

К сообщению приложен файл (ТаблФорма.rar - 20Kb) cкачать
11 апр 19, 11:42    [21859145]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
вдогонку:вернее не раскроется,а его нужно раскрыть (или использовать drop на изменении поля)
11 апр 19, 11:45    [21859149]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
sdku,
Вся фишка именно фильтре. Справочник может иметь до 5 тыс. наименований и не факт, что наименование товара имеет четкую структуру написания. Кто то введет сиг. БОНД, а другой сигареты БОНД.
11 апр 19, 12:22    [21859200]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
Шаман
sdku,
Кто то введет сиг. БОНД, а другой сигареты БОНД.
Combo и существует для того чтобы этого не допустить.Вы же пытаетесь "обдурить" полеСоСписком работа которого очень неплохо продумана создателями ACCESS-покопайте в сторону добавления в справочник новых значений (событие NotInList) с проверкой уже существующих и вновь вводимых на подобие (может не надо вводить новое наименование)
Посмотрите это 21852922 -там есть много полезностей по работе с Combo
11 апр 19, 12:59    [21859292]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
vmag
Member

Откуда: MP
Сообщений: 3269
Шаман
Вся фишка именно фильтре. Справочник может иметь до 5 тыс. наименований и не факт, что наименование товара имеет четкую структуру написания. Кто то введет сиг. БОНД, а другой сигареты БОНД.


я отказался от комбо, у меня обычное поле для фильтра, а в запросах условие типа Like "*" & [Поле1] & "*"
- очень удобно и просто, пользователь может указать сиг*бонд и найдется и так и эдак...
- после каждого символа я тоже не фильтрую, у меня есть справочники где и 20 000 и 80 000 позиций и в этом случае это будет трэш...
- юзер нажимает после ввода Enter и тогда всё подходящее выдается в список, после выбора в списке я получаю в столбцах все что нужно и ключ и штри-код и наименование и цены...
Еще можно в запросе сформировать составное поле типа полного наименования - Артикул + наименование + штрихкод и фильтр поставить именно на него, тогда по барабану что ишет юзер: это может быть последние 4-5 символов штрихкода, часть артикула и часть наименования, весь артикул и т.д.
11 апр 19, 13:26    [21859355]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
vmag
Member

Откуда: MP
Сообщений: 3269
ну да, в предварительный список отбора может попасть пару тройку лишних позиций товара, конкретный товар опять же выбирает юзер (как бы два шага при выборе - грубый поиск + выбор конкретной позиции)
11 апр 19, 13:31    [21859363]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4599
vmag
я отказался от комбо, у меня обычное поле для фильтра, а в запросах условие типа Like "*" & [Поле1] & "*"
- очень удобно и просто, пользователь может указать сиг*бонд и найдется и так и эдак...
- после каждого символа я тоже не фильтрую, у меня есть справочники где и 20 000 и 80 000 позиций и в этом случае это будет трэш...

я действую аналогично

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

поэтому ввела вариант с пробелом (алм круг)
--формируется 2 условия
алм*круг и круг*алм
или через и, типа
naim like "*круг*" and naim like "*алм*"
11 апр 19, 14:00    [21859430]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
vmag,
В принципе поиск у меня такой же. Только я задваиваю наименование Артикул + наименование + наименование + штрихкод
Тогда Вино сухое можно искать как вин*сух так и сух*вин.
По поводу обработки события после каждой буквы согласен, при большом объеме это будет жестко.
Перенес событие поиска и фильтра с изменения на отсутствие в списке и добавил игнор ошибки.
Теперь после набора жму интер и получаю все совпадения.
СПАСИБО!!!
11 апр 19, 14:13    [21859464]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
Шаман
Тогда Вино сухое можно искать как вин*сух так и сух*вин.
но могут быть варианты при большом количестве наименований когда под критерий отбора попадут товары совсем не те что надо-и запрос или отчет выдаст неверный результат
(может разбить на группы)
11 апр 19, 14:37    [21859514]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
sdku,
Использование нескольких * существенно сужает список совпадений.
Для поиска Напиток ароматизированный, изготовленный на основе пива, пастеризованный "Сет энд Райлис Гараж Хард Лимон"
достаточно ввести пивн*гар*лим или лимон*гараж и с вероятностью 99% найдется то что нужно.
11 апр 19, 15:13    [21859585]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
vmag
Member

Откуда: MP
Сообщений: 3269
Шаман,

Прикольно выкрутился... И комбо отрабатывает, если из списка, и как текстовое поле работает если не из списка, и фишка с дублем наименования зачётная
11 апр 19, 15:30    [21859613]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
Шаман
достаточно ввести пивн*гар*лим или лимон*гараж и с вероятностью 99% найдется то что нужно.
А 1%,который остался вылезет,по закону подлости,в самый ненужный момент,когда база будет наполнена большим количеством информации и ошибку искать будет ооочень трудно.А впрочем хозяин-барин - делайте как Вам нравится
11 апр 19, 17:13    [21859742]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
sdku
А 1%,который остался вылезет,по закону подлости,в самый ненужный момент,когда база будет наполнена большим количеством информации и ошибку искать будет ооочень трудно.А впрочем хозяин-барин - делайте как Вам нравится
Тут ошибок быть не может. Наоборот, получился шикарный функционал. Попробуйте сами.
Ищем водку Водка "Русь матушка премиум" 0,7 л: вбиваем рус*мат*7 , жмем Enter и получаем желаемое. Уж из 2 позиций пользователь сможет выбрать нужное.
Так же, можно делать подбор по мере фильтрации.
Например надо найти пиво Балтика №7 производитель Самара объем 1,35л
Набирали пив*балт и нажали Enter. Выпал довольно большой список. Уточняем запрос *7. Список уменьшился. Добавляем производителя *самар и добиваем литражом *1. В результате получаем всего две строки.
Ну и в заключении ищем батончик Кит-Кат: кит*кат
Достигнуть такого результата стандартным полем со списком Access просто нереально.

К сообщению приложен файл (ТаблФорма1.zip - 69Kb) cкачать
11 апр 19, 18:19    [21859814]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
Небольшое дополнение для обновления списка товаров после неудачного поиска
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
11 апр 19, 21:00    [21859925]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
Впечатляет,однако...
Шаман
Небольшое дополнение для обновления списка товаров после неудачного поиска
...WHERE ((([Наименование] & [Наименование]& [Наименование]) Like '*" & f & "*'));"..
11 апр 19, 21:53    [21859951]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
sdku,
Экспериментировал ;)
Результат показал что вполне достаточно дубля наименования.
11 апр 19, 22:14    [21859971]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
Шаман,
Я не о количестве дублей,а об этом:
?"дерево"like"*вод*"
False
?"дерево" & "дерево"like"*вод*"
True 
12 апр 19, 00:08    [21860023]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
sdku,
А, так это просто пример. В реале все разделено пробелами.
Кстати анекдот напомнил
Звонок на радио:
- Здравствуйте…вы не могли бы поставить мне и моей девушке песню Меладзе
про Стошу Говнозада…?
- А что это за песня?
- Да вот эту «Сто шагов назад…. тихо на пальцах…»
12 апр 19, 00:19    [21860037]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16729
всё уже давно придумано 200373
12 апр 19, 09:46    [21860172]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
MrShin
Member

Откуда:
Сообщений: 1277
Шаман
Ищем водку Водка "Русь матушка премиум" 0,7 л: вбиваем рус*мат*7 , жмем Enter

Звездочку вбивать сложнее, поэтому я в поисковой строке заменяю пробелы на звездочки автоматически, а пользователю долстаточно ввести "рус мат 7" для получения результата, народ доволен.
12 апр 19, 09:50    [21860180]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16729
MrShin
Звездочку вбивать сложнее, поэтому я в поисковой строке заменяю пробелы на звездочки автоматически, а пользователю долстаточно ввести "рус мат 7" для получения результата, народ доволен.

надо знать последовательность фрагментов...
12 апр 19, 09:54    [21860190]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
вадя
всё уже давно придумано 200373
Но пример из данной темы намного проще Вашего, а двойное-тройное повторение наименования в запросе поиска позволяет не задумываться о последовательности фрагментов.

MrShin, Пробел вместо звездочек реально удобнее. Спасибо за совет.
12 апр 19, 11:26    [21860293]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 16729
Шаман
вадя
всё уже давно придумано 200373
Но пример из данной темы намного проще Вашего, а двойное-тройное повторение наименования в запросе поиска позволяет не задумываться о последовательности фрагментов.

MrShin, Пробел вместо звездочек реально удобнее. Спасибо за совет.
мой вариант проверенаре временем, разными субд.и ЯП
12 апр 19, 15:28    [21860630]     Ответить | Цитировать Сообщить модератору
 Re: Combobox+поиск в табличной форме  [new]
Шаман
Member

Откуда:
Сообщений: 197
вадя,
Без обид. Не хочу вступать в перепалку чей код лучше.
Одно только поясните что в этом коде вызывает недоверие и что надо проверять временем?
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
12 апр 19, 15:50    [21860659]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить