|
|
|
| У меня на каждой форме в Акцессе 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 (пропущен оператор в выражении).
Подскажите что можно сделать. | |
|
| |
|
|
|
|
rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*'"
|
| |
|
| |
|
12 Кб. |
|
| Нет, к сожалению, при таком коде происходит просто переход на первую запись и ничего больше((( Для наглядности привожу файл БД в RARe с одной табличкой и одной формой, в которой и есть это поле поиска. | |
|
| |
|
|
|
| Нет, к сожалению, при таком коде происходит просто переход на первую запись и ничего больше
А какого результата вы хотели?
ПРиведенные выше код находит первую запись соответвующую условию | |
|
| |
|
14 Кб. |
|
| Ну, как раз этого то я и хотел, чтобы находилась первая запись СООТВЕТСТВУЮЩАЯ условию. А происходит просто переход на ПРОСТО первую запись в форме. К примеру на вторую запись, что бы я не писал в поле, переход не осуществляется.
И еще вопрос, зачем объявляется ?
Прошу прощения, в первом высланном файле удалил не ту табличку. Вот верный вариант. | |
|
| |
|
|
|
| ну да..
еще нужно Bookmark
rst.FindFirst "[MyField] like '" & MyTextBox.Text & "*'"
if not rst.NoMatch then me.bookmark = rst.bookmark
MyTextBox.SelStart = Len(MyTextBox.Text)
|
Зачем у ВАс intI As Integer - не знаю, в принципе не нужен | |
|
| |
|
|
|
| Спасибо большое за помощь, все заработало, единственное что хотелось бы узнать еще, можно ли как-то помечать найденные символы в тексте, как это делается в Access 2007? | |
|
| |
|
|
|
| надо же как 2007 преобразовался по сравнению с прежними... | |
|
| |
|
|
|
| раз нашли - можно и поменять, если рекордсет под формой обновляемый
например так:
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) | |
|
| |