Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поиск в списке (ACCESS 2000)
 
 автор: Pasat   (24.03.2008 в 11:31)   личное сообщение
31 Кб.
 
 

Привет всем !!!
Што нужно сделать штобы в форме при вводе первых букв в поле поиска - в списке оставались записи соответствующие введенным первым буквам.
Например ввожу букву "б" - остаются все слова на "б" - добавляю букву "о" - остаются все слова на "бо" - добавляю букву "р" - остаются все слова на "бор" и т.д.
На Кнопка15_Click() - все замечательно.
Почему не работает на Find1_Change(). Што нужно изменить.
Сам уже просто упарился
В приложении пример
Спасибо

  Ответить  
 
 автор: osmor   (24.03.2008 в 11:41)   личное сообщение
 
 

http://hiprog.com/index.php?option=com_content&task=view&id=606
так не пойдет?

  Ответить  
 
 автор: Pasat   (24.03.2008 в 11:51)   личное сообщение
 
 

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

  Ответить  
 
 автор: osmor   (24.03.2008 в 11:53)   личное сообщение
 
 

Нужно выйти из поля

  Ответить  
 
 автор: Pasat   (24.03.2008 в 11:58)   личное сообщение
 
 

Понял
Но фишка в том што нужно фильтровать не выходя из поля просто при изменении набора букв в поиске.
Как это сделать ???

  Ответить  
 
 автор: osmor   (24.03.2008 в 12:09)   личное сообщение
 
 

так же только работать с событием изменение и свойством TEXT

  Ответить  
 
 автор: aleksandra   (24.03.2008 в 12:27)   личное сообщение
 
 


Private Sub Выключатель46_Click()
If Me.Выключатель46 = -1 Then
Me.Поле44.Value = ""
Me.Поле44.Visible = True
Me.Поле44.SetFocus
Else
Me.Поле44.Visible = False
DoCmd.ShowAllRecords
Me.OrderByOn = True
End If
End Sub

Private Sub Поле44_GotFocus()
Me.Поле44.SelStart = Len(Me.Поле44.Text)
End Sub

Private Sub Поле44_KeyUp(KeyCode As Integer, Shift As Integer)
DoCmd.ApplyFilter , "Фамилия like '" & Me.Поле44.Text & "*'"
End Sub

  Ответить  
 
 автор: Pasat   (24.03.2008 в 12:49)   личное сообщение
32 Кб.
 
 

Сделал так:

Private Sub Find1_Change()
Me.List1.Requery
Me.Refresh
End Sub

Вроде все нормально
но
при вводе буквы в поле поиск происходит выделение введннных букв в поле поиск

Как от этого уйти ???

В приложении пример

  Ответить  
 
 автор: osmor   (24.03.2008 в 13:32)   личное сообщение
37 Кб.
 
 

можно так

  Ответить  
 
 автор: Pasat   (24.03.2008 в 13:52)   личное сообщение
 
 

ОГРОМНОЕ спасибо

ОЛЕГ

  Ответить  
 
 автор: Скорп   (24.03.2008 в 14:44)   личное сообщение
 
 

а у меня вот так работает!))

DoCmd.ApplyFilter , "Название_Фирмы like '" & Me.Поле64.Text & "*'"
Me.Поле64.SelStart = Len(Me.Поле64.Text)

где Поле64 - поле поиска
и работает!))
osmor спасибо!))
а то у меня тоже после ввода первой буквы в поле поиска, она выделялась и вторая буква заменяла собой первую введенную
проблему решила строка - Me.Поле64.SelStart = Len(Me.Поле64.Text)

  Ответить  
 
 автор: Скорп   (24.03.2008 в 15:55)   личное сообщение
 
 

хелп!
если такой записи нет в списке, то вылетает ошибка у меня

  Ответить  
 
 автор: osmor   (24.03.2008 в 16:18)   личное сообщение
 
 

какая ошибка?

  Ответить  
 
 автор: Скорп   (24.03.2008 в 16:44)   личное сообщение
 
 

если я в поле поиска набираю фирму и эта фирма есть в списке, по которому собственно она ищется, то нет проблем
но если , к примеру, фирма "Рога и копыта" есть, а я набираю "Рога и кА, то выдает ошибку, выскакивает табличка MVB с кнопакми Енд и Дебуг

я так понимаю, собака зарыта в том, что нужна типа обработка ошибки что ли...

  Ответить  
 
 автор: osmor   (24.03.2008 в 16:56)   личное сообщение
 
 

нажми дебуг, посмотри куда выкинет

  Ответить  
 
 автор: Скорп   (24.03.2008 в 17:07)   личное сообщение
 
 

аа...так выкидывает в

Me.Поле64.SelStart = Len(Me.Поле64.Text)

  Ответить  
 
 автор: osmor   (24.03.2008 в 17:15)   личное сообщение
 
 

А что говорит то? какая ошибка?

  Ответить  
 
 автор: Скорп   (24.03.2008 в 17:25)   личное сообщение
 
 

невозможно обратиться к свойству или методу элемента управления, пока на этот элемент не установлен фокус ввода

  Ответить  
 
 автор: osmor   (24.03.2008 в 17:29)   личное сообщение
 
 

что не понятно?

  Ответить  
 
 автор: Скорп   (26.03.2008 в 11:50)   личное сообщение
17 Кб.
 
 

хм..хотел написать, что ничего не понятно
сваял свой кусок в А2003, чтобы прикрепить его к форуму
и что вы думаете???
в А2003 работает!!!
а в 2007-м выдает ошибку

забыл написать, что помимо текста "невозможно обратиться к свойству или методу элемента управления, пока на этот элемент не установлен фокус ввода"
на табличке есть еще надпись
Run-Time error '2185'

  Ответить  
 
 автор: osmor   (26.03.2008 в 12:21)   личное сообщение
 
 

"невозможно обратиться к свойству или методу элемента управления, пока на этот элемент не установлен фокус ввода"
Перевожу с русского на русский
ПОка фокус находится в другом контроле (т.е. не в том к свойству которого вы обращаетесь) получить значение этого свойства (обратиться к свойству) - невозможно.
и остановка на строке:
Me.Поле64.SelStart = Len(Me.Поле64.Text)
Свойтсво "Text" поля доступно только когда в поле установлен фокус, т.е. нужно сначала установить фокус а потом обращаться к свойству:

Me.Поле64.Setfocus
Me.Поле64.SelStart = Len(Me.Поле64.Text)

  Ответить  
 
 автор: Скорп   (26.03.2008 в 12:29)   личное сообщение
 
 

не osmor
не работает
та же фигня происходит
пока набираемые буквы совпадают с теми, которые ищем - все нормуль
ну, ищу слово "АвангарД"
стОит мне в поле поиска писать "АванарТ", выдает дебуг

причем в 2003-м таких проблем нет

  Ответить  
 
 автор: osmor   (26.03.2008 в 13:16)   личное сообщение
 
 

проверил в 2007 Run-time (другого нет) все работает

  Ответить  
 
 автор: Скорп   (26.03.2008 в 13:25)   личное сообщение
 
 

блин...
так..щас свой пример ковертну в 2007-й и посмотрю...

  Ответить  
 
 автор: Скорп   (26.03.2008 в 15:15)   личное сообщение
 
 

у меня истерика щас будет
засосал сляпаную на скорую руку форму из примера в свою базу - работает!!!
на форме, в которой не работает поубивал все и скопировал со сляпаной формы код - не работает!
дайте мне парабеллум!!!

  Ответить  
 
 автор: Скорп   (26.03.2008 в 16:16)   личное сообщение
 
 

разобрался..блин
в свойствах формы, вкладка "Данные", "Разрешить добавление" поставил "Да"
я в свое время поубирал в конце ленточной формы пустые строки, т.к. список этот формируется в другом месте и чтобы менеджеры не тыкали в эту пустую строку и не пытались ввести новую фирму

а теперь эта строка понадобилась, поскольку, когда мы набираем в поле поиска слово, которого нет в списке, то в области данных не остается ни одной строки (даже пустой)
вот акс и орет - ошибка..ошибка...ошибка....

фух!

  Ответить  
 
 автор: Скорп   (24.03.2008 в 16:45)   личное сообщение
 
 

может собака порыта в том, что у меня ленточная форма находится прямо в области данных, а не так, как вы привели чуть выше в примерах
у меня в области данных просто поле Название_Фирмы и все...
а в заголовке формы стоит это самое поле поиска

  Ответить  
 
 автор: Скорп   (24.03.2008 в 16:45)   личное сообщение
 
 

***

  Ответить  
 
 автор: Pasat   (24.03.2008 в 21:05)   личное сообщение
36 Кб.
 
 

Посмотри приложенный пример
Я сделал немного по другому. Так не надо менять RowSource списка (это имеет опред.преимущества)
И ошибок никаких не происходит

Дешево и сердито

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList