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

Делаю следующую дичь:
на форме большой листбокс с результатами запроса
на этой же форме расположены поля, по которым ищем позицию из этого запроса (как узнать текст запроса? из 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
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
    #39664320
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MokeevPкак узнать текст запроса? из RowSource?

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

Отлично! Спасибо!
Иду отдыхать с чистой совестью и пустой головой! Хороших выходных)
...
Рейтинг: 0 / 0
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
    #39664336
Если вас не интересует километраж, то поле пустое (т.е. 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
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
    #39665217
MokeevP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кривцов АнатолийЕсли вас не интересует километраж, то поле пустое (т.е. 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
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
    #39665288
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Пытаюсь сделать фильтр через textbox, спотыкаюсь об 0 / null
    #39665290
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MokeevP,

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

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



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

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

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

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

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

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

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

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

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


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