Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 9

Поиск по форме

01.03.2016, 13:12. Показов 2078. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста помогите!!!!!
Хочу реализовать поиск в ленточной форме. Есть несколько колонок, таких как ФИО, должность, телефон.
Ищу по колонке фио

Visual Basic
1
2
3
4
5
6
7
Private Sub Поиск_Change()
Dim PStr As String
PStr = Me.Поиск.Text
Me.Filter = "ФИО Like '*" & PStr & "*'"
Me.FilterOn = True
Me.Поиск.SelStart = Len(PStr)
End Sub
При вводе в строку поиска несуществующей в форме записи выдается ошибка 2195.
При вводе пробела (промуск между фамилией и именем) пробел в строке поиска не ставится.
Как это исправить?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2016, 13:12
Ответы с готовыми решениями:

Поиск записей в подчиненной форме по значению поля со списком в главной форме
Доброго времени суток уважаемые Форумчане! Очередной раз необходима Ваша помощь!!! Суть вопроса: на форме Водители имеем подчиненную...

Поиск записей в подчиненной форме по различным параметрам полей в главной форме
Доброго времени суток уважаемые Форумчане! Пожалуй, заключительный вопрос. Суть вопроса: на форме Водители имеем подчиненную форму...

Поиск в основной форме по записи в подчиненной форме
Не могли бы подсказать как из подчиненной формы можно перейти в основую форму, на определенную запись. Т.е. в подчиненной форме есть...

11
648 / 101 / 11
Регистрация: 08.06.2015
Сообщений: 1,564
01.03.2016, 13:21
Выложите базу
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,937
Записей в блоге: 4
01.03.2016, 13:38
попробуйте так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Поиск_Change()
Dim PStr As String
PStr = Me.Поиск.Text
Me.Filter = "ФИО Like '*" & PStr & "*'"
Me.FilterOn = True
Dim rst1c As DAO.Recordset,fpoisk
Set rst1c = Me.RecordsetClone
fpoisk = rst1c.RecordCount
Debug.Print fpoisk
If fpoisk = 0 Then MsgBox "пустая выборка-- записи не найдены--исправьте условие поиска"
Set rst1c = Nothing
 
if fpoisk>0
Me.Поиск.SelStart = Len(PStr)
endif
End Sub
0
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 9
01.03.2016, 13:53  [ТС]
shanemac51, ругается на 13 строку.
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.03.2016, 13:53
Лучший ответ Сообщение было отмечено luchlex как решение

Решение

Чтобы избавиться от неправильной работы с пробелом надо выключить режим редактирования (Me.Dirty = False), присвоить полю значение и установить курсор. Конечная часть кода может выглядеть так
Visual Basic
1
2
3
4
5
.....................
Me.Dirty = False                  'Выключаем режим редактирования
Me.Поиск = PStr                   'Присваиваем значение полю
Me.Поиск.SelStart = Len(PStr) + 1 'Устанавливаем курсор
End Sub
1
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 9
01.03.2016, 13:59  [ТС]
Частично справился с ошибкой.
Осталось: При вводе пробела (пропуск между фамилией и именем) пробел в строке поиска не ставится.

Добавлено через 4 минуты
mobile, СПАСИБО Огромное!!! ПОМОГЛО!!!!!!!!!!!!!!!!!!
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,937
Записей в блоге: 4
01.03.2016, 14:06
ставьте знак вопроса или *

------------
Visual Basic
1
if fpoisk>0 then
0
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 9
01.03.2016, 14:26  [ТС]
mobile, проблема с ошибкой до конца не решена. Если я ввожу несуществующую фамилию, или ошибаюсь в написании то выскакивает 2185 и debug перекидывает меня на строку
Me.Поиск.SelStart = Len(PStr)
Может быть вы знаете с чем это связано?

Добавлено через 1 минуту
"Невозможно обратиться к свойству или методу элемента управления, пока на этот элемент не установлен фокус ввода"
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.03.2016, 14:45
Цитата Сообщение от luchlex Посмотреть сообщение
"Невозможно обратиться к свойству или методу элемента управления, пока на этот элемент не установлен фокус ввода"
Да в иных случаях фокус может уйти с поля. Надо его вернуть
Visual Basic
1
2
3
4
5
Me.Dirty = False                  'Выключаем режим редактирования
Me.Поиск = PStr                   'Присваиваем значение полю
Me.Поиск.Setfocus                 'Устанавливаем фокус на поле
Me.Поиск.SelStart = Len(PStr) + 1 'Устанавливаем курсор
End Sub
1
0 / 0 / 0
Регистрация: 01.03.2016
Сообщений: 9
01.03.2016, 15:08  [ТС]
Не помогло. Все то же желтое поле. При наведении курсора на Me.Поиск.SelStart подсказка =0, При наведении курсора наLen(PStr) подсказка = (то что я написал в поиске)
0
4 / 4 / 1
Регистрация: 11.12.2015
Сообщений: 29
18.10.2016, 13:05
Visual Basic
1
2
3
4
5
6
7
8
Private Sub Поле_Change()
    Me.Refresh
    Me.Form.Filter = s
    Me.FilterOn = True
    Me.AllowAdditions = (Me.Recordset.RecordCount = 0) 'ОБЯЗАТЕЛЬНО
    Me.Поле.SetFocus
    Me.Поле.SelStart = Len(Me.Поле.Text)
    End Sub
2
4 / 4 / 1
Регистрация: 11.12.2015
Сообщений: 29
30.01.2019, 20:02
Немного со временем доработал живой поиск по форме (теперь пробелы нормально отрабатывает):

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim MyFilter as String
Dim text2 As String
Me.AllowAdditions = (Me.Recordset.RecordCount = 0)
If Not IsNull(Me.SearchName.text) Then text2 = Me.SearchName.text
Me.Requery
 
MyFilter = "([SortName] like" & """" & "*" & Me.SearchName & "*" & """" & " OR [FullName] like" & """" & "*" & Me.SearchName & "*" & """")"
 
 
    Me.Form.Filter = MyFilter
    Me.FilterOn = True
  
 
Me.SearchName = text2
Me.AllowAdditions = (Me.Recordset.RecordCount = 0)
Me.SearchName.SetFocus
Me.SearchName.SelStart = Len(Me.SearchName.text)
И вот вам еще одна идея которая ускорит живой поиск в VBA.


Если источником строк формы является запрос, то в этом запросе можно поставить фильтр по значению поля Me.SearchName из рабочей формы плюс других полей по желанию. Тогда код будет выглядеть очень просто и не будет мерцать при обновлении:

Visual Basic
1
2
3
4
5
6
7
8
9
Dim MyFilter as String
Dim text2 As String
Me.AllowAdditions = (Me.Recordset.RecordCount = 0)
If Not IsNull(Me.SearchName.text) Then text2 = Me.SearchName.text
Me.Requery
Me.SearchName = text2
Me.AllowAdditions = (Me.Recordset.RecordCount = 0)
Me.SearchName.SetFocus
Me.SearchName.SelStart = Len(Me.SearchName.text)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.01.2019, 20:02
Помогаю со студенческими работами здесь

Поиск на форме
Возможно сделать на форме поиск даних? В поле ввожу значение. Нажимаю поиск... Возможно такое сделать. Что-то типа параметрического...

Поиск по форме
Есть некая форма, в которой необходимо организовать посимвольный поиск. По видео-уроку пытался организовать, но кроме ошибок с макросом...

Поиск на форме
У меня есть таблица, где имеется столбец "Материал" и в нём поочерёдно идёт лён и другая ткань. Как мне создать форму, с выпадающим...

Поиск в бд на форме
Добрый день, у меня возникла проблема с поиском нужной записи в бд, бд - Access, сделал подключение, вот принт на форме размещён...

Поиск на форме
Доброго времени суток! Начал осваивать MS Access, возникли трудности... Имеется форма построенная на запросе, и на ней сделаны 3 фильтра -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru