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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Отбор записей формы по мере ввода символов (Access 2003-2007)
 
 автор: -)LKA(-   (25.08.2009 в 14:47)   личное сообщение
 
 

Всем привет! По этой ссылке 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 не силен

  Ответить  
 
 автор: kot_k_k   (26.08.2009 в 09:26)   личное сообщение
 
 

а если сделать копию
set Cop_=me.RecordsetClone
Cop_.FindFirst "[Название] Like '" & strFind & "*'"
Cop_.Bof и Cop_.EOF дадут тебе возможность не делать очередной
Me.FilterOn = True
и нет ошибки, и мона известить пользователя, и можно у Me.ClientForFilter.Text откусывать последний символ.

  Ответить  
 
 автор: -)LKA(-   (26.08.2009 в 10:56)   личное сообщение
 
 

Спасибо за ответ, только я не очень понял
set Cop_=me.RecordsetClone
Cop_.FindFirst "[Название] Like '" & strFind & "*'"
Cop_.Bof и Cop_.EOF дадут тебе возможность не делать очередной 
Me.FilterOn = True 
куда это вставлять в коде

  Ответить  
 
 автор: kot_k_k   (26.08.2009 в 11:21)   личное сообщение
 
 

Перед применением фильтра для формы - ведь после этого возникает ошибка.
получается Ты сначала обрабатываешь КОПИЮ формы - если EOF и BOF для копии =True тогда фильтр - недопустим

  Ответить  
 
 автор: Дядя Федор   (31.08.2009 в 12:42)   личное сообщение
 
 

А не проще вставить обработчик ошибок

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

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