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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Поиск в форме Access 2003
 
 автор: corvin-nik   (03.05.2007 в 14:14)   личное сообщение
 
 

У меня на каждой форме в Акцессе 2007 автоматом есть поле "поиск", где по первым введенным буквам отображается на форме нужная запись. А в Акцессе 2003, который на работе - такого поля нет. Хотелось бы такое же реализовать с обычным полем. Чтобы не нажимать постоянно для поиска Ctrl+F.

Нашел такой вот пример:


Private Sub MyTextBox_Change()
    Dim rst As DAO.Recordset, intI As Integer

    Set rst = Form.Recordset
    rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*'"
    Debug.Print rst.NoMatch
    MyTextBox.SelStart = Len(MyTextBox.Text)
    
End Sub

Но у меня выпадает ошибка 3077 (пропущен оператор в выражении).

Подскажите что можно сделать.

  Ответить  
 
 автор: osmor   (03.05.2007 в 14:59)   личное сообщение
 
 


rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*'" 

  Ответить  
 
 автор: corvin-nik   (03.05.2007 в 15:23)   личное сообщение
12 Кб.
 
 

Нет, к сожалению, при таком коде происходит просто переход на первую запись и ничего больше((( Для наглядности привожу файл БД в RARe с одной табличкой и одной формой, в которой и есть это поле поиска.

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

Нет, к сожалению, при таком коде происходит просто переход на первую запись и ничего больше
А какого результата вы хотели?
ПРиведенные выше код находит первую запись соответвующую условию

  Ответить  
 
 автор: corvin-nik   (03.05.2007 в 15:35)   личное сообщение
14 Кб.
 
 

Ну, как раз этого то я и хотел, чтобы находилась первая запись СООТВЕТСТВУЮЩАЯ условию. А происходит просто переход на ПРОСТО первую запись в форме. К примеру на вторую запись, что бы я не писал в поле, переход не осуществляется.
И еще вопрос, зачем объявляется
intI As Integer
?
Прошу прощения, в первом высланном файле удалил не ту табличку. Вот верный вариант.

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

ну да..
еще нужно Bookmark


rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*'" 
if not  rst.NoMatch then me.bookmark = rst.bookmark
MyTextBox.SelStart = Len(MyTextBox.Text) 


Зачем у ВАс intI As Integer - не знаю, в принципе не нужен

  Ответить  
 
 автор: corvin-nik   (03.05.2007 в 18:04)   личное сообщение
 
 

Спасибо большое за помощь, все заработало, единственное что хотелось бы узнать еще, можно ли как-то помечать найденные символы в тексте, как это делается в Access 2007?

  Ответить  
 
 автор: час   (04.05.2007 в 08:12)   личное сообщение
 
 

надо же как 2007 преобразовался по сравнению с прежними...

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

раз нашли - можно и поменять, если рекордсет под формой обновляемый
например так:
rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*'"
if not rst.NoMatch then
me.bookmark = rst.bookmark
me.MyField = MyTextBox.Text & right(me.MyField,len(me.MyField) - len(MyTextBox.Text))
end if
MyTextBox.SelStart = Len(MyTextBox.Text)

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