Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null / 19 сообщений из 19, страница 1 из 1
22.06.2018, 15:25
    #39664308
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
Здравствуйте, уважаемые форумчане!

Делаю следующую дичь:
на форме большой листбокс с результатами запроса
на этой же форме расположены поля, по которым ищем позицию из этого запроса (как узнать текст запроса? из RowSource? сейчас вбито вручную в VBA). один из критериев - километраж
нажимаем кнопку - из заполненных полей собирается строка поиска - найденный результат выделяется в листбоксе
всё работает хорошо ровно до того момента, пока не пытаюсь найти нулевой километр. машинка бодренько отчитывается что textbox = null, а у меня на этом условие для написания строки критерия

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim srch As String

If Me.txtKppSrchKM.Value <> 0 _ 
    Then

'пытался воткнуть сюда <Or CStr(Me.txtKppSrchKM.Value) = "0">, 
'но код тогда совсем ломается и считает меня дегенератом, а не дилетантом

    If Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
    srch = srch & " Pln_KPP_list.KM = " & CStr(Me.txtKppSrchKM.Value)
End If



Как бы лучше победить этот проблемес без перестройки всей этой конструкции?
____
vk.com/taenfox
...
Рейтинг: 0 / 0
22.06.2018, 15:47
    #39664320
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
MokeevPкак узнать текст запроса? из RowSource?

проверил, работает
...
Рейтинг: 0 / 0
22.06.2018, 15:54
    #39664324
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
Isnull(Me.txtKppSrchKM.Value)=false and not Me.txtKppSrchKM.Value=""
патамучта.... ""(пустая строка) совсем не равно Null :))
...
Рейтинг: 0 / 0
22.06.2018, 15:59
    #39664327
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
Serg197311Isnull(Me.txtKppSrchKM.Value)=false and not Me.txtKppSrchKM.Value=""
патамучта.... ""(пустая строка) совсем не равно Null :))

Отлично! Спасибо!
Иду отдыхать с чистой совестью и пустой головой! Хороших выходных)
...
Рейтинг: 0 / 0
22.06.2018, 16:11
    #39664336
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
Если вас не интересует километраж, то поле пустое (т.е. Null)? Тогда:
If Not IsNull(Me!txtKppSrchKM) Then

MokeevPIf Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
srch = srch & " Pln_KPP_list.KM = " & CStr(Me.txtKppSrchKM.Value)

Проще и короче каждое условие добавлять с " and " в начале, а после сборки отбросить первые 5 символов:
Код: vbnet
1.
2.
3.
4.
srch = srch & " and Pln_KPP_list.KM = " & Me!txtKppSrchKM
srch = srch & " and ..."
...
srch = Mid(srch,6)



Если километраж - целые числа и символ конкатенации - &, то функция CStr у вас лишняя.
Если может быть дробное число, тогда нужна функция Str
...
Рейтинг: 0 / 0
25.06.2018, 11:42
    #39665217
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
Кривцов АнатолийЕсли вас не интересует километраж, то поле пустое (т.е. Null)? Тогда:
If Not IsNull(Me!txtKppSrchKM) Then

MokeevPIf Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
srch = srch & " Pln_KPP_list.KM = " & CStr(Me.txtKppSrchKM.Value)

Проще и короче каждое условие добавлять с " and " в начале, а после сборки отбросить первые 5 символов:
Код: vbnet
1.
2.
3.
4.
srch = srch & " and Pln_KPP_list.KM = " & Me!txtKppSrchKM
srch = srch & " and ..."
...
srch = Mid(srch,6)



Если километраж - целые числа и символ конкатенации - &, то функция CStr у вас лишняя.
Если может быть дробное число, тогда нужна функция Str

Рабочий код получился такой:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Private Sub btnKPPsearch_Click()
Dim rst As DAO.Recordset
Dim srch As String
Dim rslt As Long
Dim Ilst As ListBox
Set Ilst = Me.lstNivelProg
rslt = Ilst.ListIndex

If Not IsNull(Me.txtID.Value) _
    Then
    If Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
    srch = srch & " list.IDobj = " & Me.txtID.Value
End If

If Me.lstKppSrchOST.Value <> 0 _
    Then
    If Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
    srch = srch & " list.ShortName = '" & Me.lstOST.Column(1, Me.lstOST.ListIndex) & "'"
End If

If Me.lstMN.Value <> 0 _
    Then
    If Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
    srch = srch & " NameMN = '" & Me.lstMN.Column(1, Me.lstMN.ListIndex) & "'"
End If

If Me.lstType.Value <> 0 _
    Then
    If Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
    srch = srch & " Type = '" & Me.lstType.Column(1, Me.lstType.ListIndex) & "'"
End If

If IsNull(Me.txtKM.Value) = False And Not Me.txtKM.Value _
    Then
    If Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
    srch = srch & " KM = " & CStr(Me.txtKM.Value)       'без CSTR тут никак вроде
End If

If Me.lstKppSrchNivel.Value <> 0 _
    Then
    If Left(srch, 4) <> " and" And srch <> "" Then srch = srch & " and"
    srch = srch & " n = '" & Me.Nivel.Column(1, Me.lstNivel.ListIndex) & "'"
End If

again:
If srch = "" Then Exit Sub
Set rst = CurrentDb.OpenRecordset(Ilst.RowSource)
rst.FindNext srch
Do While (rst.AbsolutePosition <= rslt And rst.NoMatch = False)
rst.FindNext srch
Loop
rslt = rst.AbsolutePosition
If rst.NoMatch _
    Then
        If MsgBox("Не найдено", vbRetryCancel) = vbRetry _
            Then
                rslt = 0
                GoTo again
        End If
End If
Set rst = Nothing

Me.lstNivelProg.Selected(rslt) = True
End Sub



То есть проверяю наличие каждого условия и если есть, то прикручиваю его с оператором and
Самое главное что нулевой километр ищиццо
...
Рейтинг: 0 / 0
25.06.2018, 12:59
    #39665288
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
MokeevP,

почти наверняка написала бы иначе(чтобы не зависеть от случайных лишних пробелов)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
srch=""
If Not IsNull(Me.txtID.Value)     Then

    srch = srch & " and list.IDobj = " & Me.txtID.Value
End If

If Me.lstKppSrchOST.Value <> 0     Then
 
    srch = srch & "  and list.ShortName = '" & Me.lstOST.Column(1, Me.lstOST.ListIndex) & "'"
End If

If Me.lstMN.Value <> 0     Then
    
    srch = srch & "  and NameMN = '" & Me.lstMN.Column(1, Me.lstMN.ListIndex) & "'"
End If

If Me.lstType.Value <> 0     Then
 
    srch = srch & " and [Type] = '" & Me.lstType.Column(1, Me.lstType.ListIndex) & "'"
End If

If IsNull(Me.txtKM.Value) = False And Not Me.txtKM.Value     Then
  
    srch = srch & " and KM = " & CStr(Me.txtKM.Value)       'без CSTR тут никак вроде
End If

If Me.lstKppSrchNivel.Value <> 0     Then
  
    srch = srch & " and n = '" & Me.Nivel.Column(1, Me.lstNivel.ListIndex) & "'"
End If

again:
If srch = "" Then Exit Sub
srch="true " & srch
...
Рейтинг: 0 / 0
25.06.2018, 13:02
    #39665290
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
MokeevP,

хотя я весьма сомневаюсь, что правильно отработают строки типа , если поле не заполнено(null)
Код: vbnet
1.
If Me.lstKppSrchOST.Value <> 0     Then
...
Рейтинг: 0 / 0
25.06.2018, 14:51
    #39665375
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
ПЕНСИОНЕРКАMokeevP,

хотя я весьма сомневаюсь, что правильно отработают строки типа , если поле не заполнено(null)
Код: vbnet
1.
If Me.lstKppSrchOST.Value <> 0     Then



Но, тем не менее, они таки вполне себе работают :)
...
Рейтинг: 0 / 0
25.06.2018, 16:58
    #39665464
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
как вариант гляньте это:
...
Рейтинг: 0 / 0
25.06.2018, 23:42
    #39665641
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
sdkuкак вариант гляньте это:

Премного благодарен! Ваш пример очень познавателен для меня
...
Рейтинг: 0 / 0
26.06.2018, 08:30
    #39665689
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
sdku,

если не затруднит, подскажите как можно отловить событие ввода очередного символа в textbox? Хочется счётчик символов прикрутить...
...
Рейтинг: 0 / 0
26.06.2018, 11:56
    #39665887
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
MokeevP,
Есть события:изменение (Change),клавиша вверх,вниз,нажатие клавиши (KeyDown, KeyUp, KeyPress) на любом из них можно считать количество нажатий.
...
Рейтинг: 0 / 0
26.06.2018, 12:09
    #39665903
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
MokeevPесли не затруднит, подскажите как можно отловить событие ввода очередного символа в textbox? Хочется счётчик символов прикрутить...А если пользователи скопипастят?
...
Рейтинг: 0 / 0
26.06.2018, 12:48
    #39665946
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
ПанургMokeevPесли не затруднит, подскажите как можно отловить событие ввода очередного символа в textbox? Хочется счётчик символов прикрутить...А если пользователи скопипастят?

Понял) А как по умному сделать? я поставил ограничение в поле и хочу чтобы пользователь видел что он сначала приближается к критически-длинному словоблудию, а потом что он и вовсе неправ. Пока что пробовал с afterupdate, lostfocus, change и т.д. связать, работает (меняет цифру в надписе) , но, соответственно, когда пользователь кончил.
...
Рейтинг: 0 / 0
26.06.2018, 14:25
    #39666038
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
На событии change надо проверять св-во Text, а не Value.

Зы. Вы считаете, что "когда пользователь кончил", он тут же "меняет цифру в надписе"?
...
Рейтинг: 0 / 0
26.06.2018, 15:17
    #39666071
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
Кривцов АнатолийНа событии change надо проверять св-во Text, а не Value.

Зы. Вы считаете, что "когда пользователь кончил", он тут же "меняет цифру в надписе"?

Я имел в виду что когда пользователь кончил со словоблудием он нажимает кнопку и срабатывает одно из событий, которое рассказывает ему что он не прав, исправляет в надписи циферку на отрицательную (на сколько он перевалил за лимит) и кнопку он в итоге не нажимает)

Это уже оффтоп, к фильтрации никакого отношения не имеет. Я начал спрашивать вдруг тов. sdku имеет под рукой что-то подходящее, ибно упомЯнул afterupdate
...
Рейтинг: 0 / 0
26.06.2018, 15:35
    #39666083
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
sdkuMokeevP,
Есть события:изменение (Change),клавиша вверх,вниз,нажатие клавиши (KeyDown, KeyUp, KeyPress) на любом из них можно считать количество нажатий.MokeevP......ибно упомЯнул afterupdate И хде, в моем сообщении, про afterupdate? Не сказано о том,что проверять надо text, а не value,но это Вам пояснили
...
Рейтинг: 0 / 0
26.06.2018, 15:42
    #39666087
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
sdkusdkuMokeevP,
Есть события:изменение (Change),клавиша вверх,вниз,нажатие клавиши (KeyDown, KeyUp, KeyPress) на любом из них можно считать количество нажатий.MokeevP......ибно упомЯнул afterupdate И хде, в моем сообщении, про afterupdate? Не сказано о том,что проверять надо text, а не value,но это Вам пояснили

Ну, не в сообщении, а в примере (ещё раз спасибо!) )
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]