|
|
|
| Использую такой вот код, нашел его в одной из тем.
Проблема в том что в поле можно писать только одно слово или часть, не ставится пробел. Как подправить код, что бы можно было использовать пробел?
Private Sub Поле39_Change()
Dim strFind As String
strFind = Nz(Me.Поле39.Text, "")
If strFind <> "" Then
Me.Filter = "[Название публикации] Like '*" & strFind & "*'"
Me.FilterOn = True
Me.Поле39.SelStart = 200
Me.Поле41 = ""
Me.Поле43 = ""
Me.Поле45 = ""
Me.Поле49 = ""
Me.Поле53 = ""
Else
Me.FilterOn = False
Me.Поле39.SetFocus
End If
End Sub
|
| |
|
| |
|
|
|
| надо найти Сухно Александр Михайлович
не набирается о а
набрала оа
затем вставила пробел --конечно это костыль | |
|
| |
|
|
|
| Работает и простая "*", к примеру Сухно*Александр, но это как-то не правильно | |
|
| |
|
|
|
| при наборе о*а выберем и осадчего
а это не надо | |
|
| |
|
|
|
| Ну так что, не у кого нет предложений по улучшению? Еще бы неплохо добавить вывод msgBox, если нет совпадений, ибо сейчас это приводит к ошибке | |
|
| |
|
|
|
| Конечно можно набирать о/а или о"а (кавычка)
затем заменить черточку\кавычку на пробел
осадчего по крайней мере не выберем
пустая выборка , если есть добавление записей --не дает ошибки
если добавления нет --надо проверять | |
|
| |
|
|
|
| У меня уже давно, в разных проектах работает вот такой код:
Private Sub Поиск_Change() 'поле для ввода строки поиска, расположено в главной форме
On Error GoTo Поиск_Err
Dim strFind As String
strFind = Nz(Me.Поиск.Text, "")
If strFind <> "" Then
Me!Поиск = strFind
Forms("ИмяГлавнойФормы").ИмяПодчиненнойФормы.Form.Filter = "[ИмяПоляПодчиненнойФормыГдеИскать] Like '*" & strFind & "*'"
Forms("ИмяГлавнойФормы").ИмяПодчиненнойФормы.FilterOn = True
Me.Поиск.SelStart = 200
Else
Forms("ИмяГлавнойФормы").ИмяПодчиненнойФормы.Form.FilterOn = False
End If
Поиск_Exit:
Exit Sub
Поиск_Err:
Forms("ИмяГлавнойФормы").ИмяПодчиненнойФормы.Form.FilterOn = False
MsgBox Err.Description
Resume Поиск_Exit
End Sub
|
- ищет в подчиненной форме
- с пробелом тоже ищет
- если ничего не нашел, ошибки не выдает - просто подчиненная форма пустая | |
|
| |
|
|
|
| Те же параметры поиска что и у меня, как у вас пробелы пишет не пойму | |
|
| |
|
|
|
| при посимвольном поиске пробел съедается
но если набрать условие поиска и нажать кнопку --все ОК | |
|
| |
|
|
|
| Может какая-то разница в системе...
У меня везде: winXP SP3, MSOffice2003 SP3.
Офис устанавливаю всегда так: Выборочная установка - Расширенная настройка приложений - Запускать все с моего компьютера.
Щас еще раз проверил: ищет и сначала и по вхождению, с пробелом и без, никаких ошибок не выдает... | |
|
| |
|
|
|
| object doesn t support this property or method
такая вот ошибочка при попытке заполнить поле
Private Sub Поле39_Change()
On Error GoTo Поиск_Err
Dim strFind As String
strFind = Nz(Me.Поле39.Text, "")
If strFind <> "" Then
Me.Поле39 = strFind
Forms("xxx").[yyy].Form.Filter = "[Столбец] Like '*" & strFind & "*'"
Forms("xxx").[yyy].FilterOn = True
Me.Поле39.SelStart = 200
Else
Forms("xxx").[yyy].Form.FilterOn = False
End If
Поиск_Exit:
Exit Sub
Поиск_Err:
Forms("xxx").[yyy].Form.FilterOn = False
MsgBox Err.Description
Resume Поиск_Exit
End Sub
|
| |
|
| |
|
45 Кб. |
|
| У Вас поле для ввода строки поиска местами называется "Поле39", местами "Поиск"
Вот, рабочая модель... | |
|
| |
|
|
|
| Везде поле называется "Поле39", а поиск это что будет во время ошибок происходить
On Error GoTo Поиск_Err - во время ошибки перейти к "Поиск_Err"
Поиск_Err: - перейдя сюда отключаем фильтр и выводим ошибку
Forms("xxx").[yyy].Form.FilterOn = False
MsgBox Err.Description
Resume Поиск_Exit - далее перейти к Поиск_Exit
Поиск_Exit: - вот сюда
Exit Sub | |
|
| |
|
|
|
| Должно быть везде одинаково | |
|
| |
|
|
|
| Ничего не должно быть одинаково
Вот рабочая часть кода с поиском на той же форме что и поле, там так же все по разному названо. Вместо Поиск_Err и Поиск_Exit можно хоть "абракадабра" написать.
On Error GoTo Поиск_Err
Dim strFind As String
strFind = Nz(Me.Поле39.Text, "")
If strFind <> "" Then
Me.Filter = "[Столбец] Like '*" & strFind & "*'"
Me.FilterOn = True
Me.Поле39.SelStart = 200
Else
Me.FilterOn = False
Me.Поле39.SetFocus
End If
Поиск_Exit:
Exit Sub
Поиск_Err:
Me.FilterOn = False
Me.Поле39 = Null
MsgBox "Совпадений не обнаружено!", vbCritical, "Поиск"
Resume Поиск_Exit
End Sub
|
| |
|
| |