|
|
|
| Всем привет! По этой ссылке http://hiprog.com/index.php?option=com_content&task=view&id=251661615&Itemid=35 sample выкладывал пример "Отбор записей формы по мере ввода символов в поле "
Option Compare Database
Option Explicit
Private Sub ClientForFilter_Change()
Dim strFind As String
strFind = Nz(Me.ClientForFilter.Text, "")
If strFind <> "" Then
Me.Filter = "[Название] Like '" & strFind & "*'"
Me.FilterOn = True
Me.ClientForFilter.SelStart = 200
Else
Me.FilterOn = False
End If
End Sub
|
Так вот проблема: если на форме убрать возможность добавления новой записи то при вводе в поле поиска слова, которого нет в таблице (форме) вылетает ошибка Run-time error '2185'
Помогите решить эту проблему пож-та, в vba не силен | |
|
| |
|
|
|
| а если сделать копию
set Cop_=me.RecordsetClone
Cop_.FindFirst "[Название] Like '" & strFind & "*'"
Cop_.Bof и Cop_.EOF дадут тебе возможность не делать очередной
Me.FilterOn = True
и нет ошибки, и мона известить пользователя, и можно у Me.ClientForFilter.Text откусывать последний символ. | |
|
| |
|
|
|
| Спасибо за ответ, только я не очень понял
set Cop_=me.RecordsetClone
Cop_.FindFirst "[Название] Like '" & strFind & "*'"
Cop_.Bof и Cop_.EOF дадут тебе возможность не делать очередной
Me.FilterOn = True
| куда это вставлять в коде | |
|
| |
|
|
|
| Перед применением фильтра для формы - ведь после этого возникает ошибка.
получается Ты сначала обрабатываешь КОПИЮ формы - если EOF и BOF для копии =True тогда фильтр - недопустим | |
|
| |
|
|
|
| А не проще вставить обработчик ошибок
Private Sub ClientForFilter_Change()
Dim strFind As String
On Error GoTo Err_1
strFind = Nz(Me.ClientForFilter.Text, "")
If strFind <> "" Then
Me.Filter = "[Название] Like '" & strFind & "*'"
Me.FilterOn = True
Me.ClientForFilter.SelStart = 200
Else
Me.FilterOn = False
End If
Exit Sub
Err_1:
MsgBox "Нет записей" 'или что-то в этом роде или вообще не выводить сообщение а забить программно последний символ ввода в ClientForFilter
End Sub
|
| |
|
| |