Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / фильр флажками / 25 сообщений из 66, страница 1 из 3
28.03.2016, 16:26
    #39202303
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Форумчане, сделал общий фильтр к которому подвязал все списки и флажки, но появилась проблема со флажками

Private Sub FilterForm()

Dim strFilter As String

strFilter = "True"

If Form.Recordset.EOF Then Me.FilterOn = False
Form.Dirty = False

If Me.Napr_no = True Then strFilter = strFilter & " and [kVili25kV] Like ""НЕТ"""


If Me.Napr_yes = True Then strFilter = strFilter & " and [kVili25kV] Like ""ДА"""

If Me.Napr_case = True Then strFilter = strFilter & " and [kVili25kV] Like ""null"""


If Me.Napr_all = True Then strFilter = strFilter & ""

Me.Filter = strFilter
Me.FilterOn = True



End Sub
Выдает ошибку и не хочет фильтровать. Получается мне нужно 4 позиции: ДА,НЕТ,пусто,все
...
Рейтинг: 0 / 0
28.03.2016, 16:35
    #39202320
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
1. Like без * это =.
2. Как поле может быть одновременно ("НЕТ" И "ДА" И "null")? Может, ИЛИ?
3. А "null" - это так в поле и прописано, как текст?
4. Да и по поводу "НЕТ" и "ДА".... Что-то странное...
...
Рейтинг: 0 / 0
28.03.2016, 16:38
    #39202323
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Поле kVili25kV - это логическое (Boolean) поле таблицы Access?
В этом случае оно не может быть Null.
...
Рейтинг: 0 / 0
28.03.2016, 16:43
    #39202330
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

по сути да, да и нет, не смогут быть одновременно это ясно, в этом случае если будут выбраны два флажка то записей не будет. Я разделил флажки для другой цели, чтобы иметь возможность выбирать нет и пусто, или да и пусто, но т.к. это было бы большим нагромождением условий, то сделал 4 флажка, так будет удобней, поверьте) null, это незаполненное поле. И поле kVili25kV, не логическое, т.е. не Boolean
...
Рейтинг: 0 / 0
28.03.2016, 16:46
    #39202335
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisan, чтобы иметь возможность выбирать нет и пусто, или да и пустоНо это все равно ИЛИ (OR), но не И (AND).
...
Рейтинг: 0 / 0
28.03.2016, 16:48
    #39202344
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

это будет значение И, но получается у меня так, что есть общий фильтр и он вызывается для каждого элемента формы. strFilter это общий фильтр, вызываемый для всех элементов
...
Рейтинг: 0 / 0
28.03.2016, 16:58
    #39202356
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisanэто будет значение ИОх....
Еще и значение....
Даже не логическая операция...
...
Рейтинг: 0 / 0
28.03.2016, 19:00
    #39202476
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

Логическая операция. В любом случае вопрос был в синтаксисе кода)) почему не получается применить переменную общего фильтра и условие для него) для флажка
...
Рейтинг: 0 / 0
28.03.2016, 19:21
    #39202497
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisannull, это незаполненное поле. И поле kVili25kV, не логическое, т.е. не BooleanВ таком случае условие должно быть таким
Код: vbnet
1.
kVili25kV Is Null

RetvisanЯ разделил флажки для другой цели, чтобы иметь возможность выбирать нет и пусто, или да и пустоВ таком случае условия должны быть такими
Код: vbnet
1.
(kVili25kV Is Null OR kVili25kV = "<значение>")

, где "<значение>" либо "ДА", либо "НЕТ" (неужели, действительно, так и записано в таблице???).
...
Рейтинг: 0 / 0
28.03.2016, 20:11
    #39202523
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

https://yadi.sk/d/f4jhDwdAqYWdz , вот база, там сделал все флажки, вроде как. посмотрите, если хотите) быть может я вас заблуждение ввожу)
...
Рейтинг: 0 / 0
28.03.2016, 20:15
    #39202526
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisan,

Ой, нет, у меня accdb не откроется.(((
Максимум в 2003-м могу посмотреть, если переделаете в формат 2003-го.
...
Рейтинг: 0 / 0
28.03.2016, 20:28
    #39202531
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
...
Рейтинг: 0 / 0
28.03.2016, 21:35
    #39202560
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,
задумка другая, как прописать условие и переменную общего фильтра одновременно? и все не надо делать никаких двойных условий.Если делать двойные условия, то у меня будет переключателей больше, раз,два я не смогу фиьтровать данные вместе со списками, которые я уже добавил в общий фильтр
...
Рейтинг: 0 / 0
28.03.2016, 21:37
    #39202562
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisan,

Ага, скачала.
Посмотрю попозже, бегло взглянула - удивилась.)))
Попробую распутать Ваши критерии, прямо в базе.
Выложу результат.
...
Рейтинг: 0 / 0
28.03.2016, 21:51
    #39202570
1121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__MichelleRetvisan,

Ага, скачала.
Посмотрю попозже, бегло взглянула - удивилась.)))
Попробую распутать Ваши критерии, прямо в базе.
Выложу результат.*-*
**
...
Рейтинг: 0 / 0
28.03.2016, 22:05
    #39202576
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

спасибо, если что, тот кусочек кода, который я выложил сюда в тему, не вставлен, ибо если я его заменяю в общем фильтре, то потом редактор уже не открывается))) не знаю почему, просто экссесс зависает)
...
Рейтинг: 0 / 0
28.03.2016, 23:03
    #39202610
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
В общем, так.
У меня тоже на Вашей базе при попытке сохранить или перейти из режима конструктора в режим формы вываливается Access.
Но все же удалось часть кода изменить и проверить работу.
Все получается.
Изменения покажу здесь, так как базу пересохранить не удается.

Вместо этого фрагмента
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    If [L] > "" Then strFilter = strFilter & " AND [L] Like  '*" & LVybor & "*'"
    If [N] > "" Then strFilter = strFilter & " AND [N] Like  '*" & NVybor & "*'"
    If [IS510] > "" Then strFilter = strFilter & " AND [IS510] Like  '*" & IS510Vybor & "*'"
    If [IS520] > "" Then strFilter = strFilter & " AND [IS520] Like  '*" & IS520Vybor & "*'"
    If [IS530] > "" Then strFilter = strFilter & " AND [IS530] Like  '*" & IS530Vybor & "*'"
    If [R1] > "" Then strFilter = strFilter & " AND [R1] Like  '*" & R1Vybor & "*'"
    If [R2] > "" Then strFilter = strFilter & " AND [R2] Like  '*" & R2Vybor & "*'"
    If [R3] > "" Then strFilter = strFilter & " AND [R3] Like  '*" & R3Vybor & "*'"
    If [R4] > "" Then strFilter = strFilter & " AND [R4] Like  '*" & R4Vybor & "*'"
    If [R5] > "" Then strFilter = strFilter & " AND [R5] Like  '*" & R5Vybor & "*'"
    If [vneplan] > "" Then strFilter = strFilter & " AND [vneplan] Like  '*" & VneplanVybor & "*'"

сделала этот
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    If Not IsNull(LVybor) Then strFilter = strFilter & " AND [L]=""" & LVybor & """"
    If Not IsNull(NVybor) Then strFilter = strFilter & " AND [N]=""" & NVybor & """"
    If Not IsNull(IS510Vybor) Then strFilter = strFilter & " AND [IS510]=""" & IS510Vybor & """"
    If Not IsNull(IS520Vybor) Then strFilter = strFilter & " AND [IS520]=""" & IS520Vybor & """"
    If Not IsNull(IS530Vybor) Then strFilter = strFilter & " AND [IS530]=""" & IS530Vybor & """"
    If Not IsNull(R1Vybor) Then strFilter = strFilter & " AND [R1]=""" & R1Vybor & """"
    If Not IsNull(R2Vybor) Then strFilter = strFilter & " AND [R2]=""" & R2Vybor & """"
    If Not IsNull(R3Vybor) Then strFilter = strFilter & " AND [R3]=""" & R3Vybor & """"
    If Not IsNull(R4Vybor) Then strFilter = strFilter & " AND [R4]=""" & R4Vybor & """"
    If Not IsNull(R5Vybor) Then strFilter = strFilter & " AND [R5]=""" & R5Vybor & """"
    If Not IsNull(VneplanVybor) Then strFilter = strFilter & " AND [vneplan]=""" & VneplanVybor & """"

На мой взгляд, эти критерии теперь работают.
Проверьте, пожалуйста, у себя.

По критерию для напряжения мне пока не ясно, чем отличается "Не важно" от "Все".
Когда объясните, попробую и этот критерий сделать.
...
Рейтинг: 0 / 0
29.03.2016, 08:50
    #39202710
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

это да, у меня и до этого в принципе работали списки(в плане фильтрации у меня не было к ним нареканий, выдавали данные, что нужны), у меня самой большой трабл с флажками, у меня не получается задать для флажков strFilter, как я пытался это сделать приведено выше, в самом начале темы)
...
Рейтинг: 0 / 0
29.03.2016, 09:11
    #39202728
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

Вот какой код теперь, ваш код для списков работает) я попытялся переделать для флажков, но косяк сохраняется, выдает ошибку

Private Sub FilterForm()

Dim strFilter As String

strFilter = "True"

If Form.Recordset.EOF Then Me.FilterOn = False
Form.Dirty = False
Me.Filter = strFilter

If Not IsNull(LVybor) Then strFilter = strFilter & " AND [L]=""" & LVybor & """"
If Not IsNull(NVybor) Then strFilter = strFilter & " AND [N]=""" & NVybor & """"
If Not IsNull(IS510Vybor) Then strFilter = strFilter & " AND [IS510]=""" & IS510Vybor & """"
If Not IsNull(IS520Vybor) Then strFilter = strFilter & " AND [IS520]=""" & IS520Vybor & """"
If Not IsNull(IS530Vybor) Then strFilter = strFilter & " AND [IS530]=""" & IS530Vybor & """"
If Not IsNull(R1Vybor) Then strFilter = strFilter & " AND [R1]=""" & R1Vybor & """"
If Not IsNull(R2Vybor) Then strFilter = strFilter & " AND [R2]=""" & R2Vybor & """"
If Not IsNull(R3Vybor) Then strFilter = strFilter & " AND [R3]=""" & R3Vybor & """"
If Not IsNull(R4Vybor) Then strFilter = strFilter & " AND [R4]=""" & R4Vybor & """"
If Not IsNull(R5Vybor) Then strFilter = strFilter & " AND [R5]=""" & R5Vybor & """"
If Not IsNull(VneplanVybor) Then strFilter = strFilter & " AND [vneplan]=""" & VneplanVybor & """"


If (Me!Napr_no) = True Then strFilter = strFilter & " kVili25kV=ÍÅÒ"


If (Me!Napr_yes) = True Then strFilter = strFilter & " kVili25kV=ÍÅÒ"

If (Me!Napr_case) = True Then strFilter = strFilter & " kVili25kV is null"


If (Me!Napr_all) = True Then strFilter = strFilter & ""



Me.Filter = strFilter
Me.FilterOn = True



End Sub
...
Рейтинг: 0 / 0
29.03.2016, 09:13
    #39202731
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisan,

у вас может быть 2 варианта выборки

условие1 и(and) условие2
условие1 или(or) условие 2

и только вы знаете, какой тип сочетания вы хотите получить

L AND 380
(L OR N) AND 380
(L OR N OR 310) AND (только что-то)
(L OR N OR 310) AND (кроме что-то)
....
...
Рейтинг: 0 / 0
29.03.2016, 09:16
    #39202735
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisan,

вам я на другом форуме выложила пример на сочетание типа
(L=DA OR N=DA) AND (FLAG11=DA) AND (FLAG21=DA)

что там не так
...
Рейтинг: 0 / 0
29.03.2016, 09:20
    #39202740
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
ПЕНСИОНЕРКА,и снова здравствуйте) место встречи изменить нельзя)

причина в том, что там использованы групповые переключатели, в которых я могу выбрать только одно условие. Мучаться с сочетаниями это тупик, я буду добавлять еще один блок флажков. И перебирать все варианты просто невозможно. поэтому нужны флажки, с общим фильтром, который вызвается для них.
...
Рейтинг: 0 / 0
29.03.2016, 09:38
    #39202754
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
Retvisanу меня и до этого в принципе работали списки(в плане фильтрации у меня не было к ним нареканий, выдавали данные, что нужны)Этого быть просто не может!
Внимательно посмотрите на свой код и на мой.
Неужели не видите принципиальную разницу?
Вы вместо проверки значения критерия проверяете текущее значение из ленточной формы и на основании этого "фильтруете",
причем зачем-то с бессмысленным LIKE.
Не дает Ваш код нужного результата, сказки.
Вы даже не попробовали применить мой?Retvisanу меня самой большой трабл с флажками, у меня не получается задать для флажков strFilter, как я пытался это сделать приведено выше, в самом начале темы)Ваши варианты из начала темы мне не очень нужны.
Они, простите, дикие.
Мне нужен был ответ на вопрос, чем отличается "Не важно" от "Все".
Вы вопрос проигнорировали. Ну, ладно, сама догадаюсь.

Вот Вам вариант для Напряжения.
Вместо этого фрагмента
Код: vbnet
1.
2.
3.
4.
5.
    If [kVili25kV] > "" Then strFilter = strFilter & " AND [kVili25kV] Like  'НЕТ" & Napr_no & "НЕТ'"
    If [kVili25kV] > "" Then strFilter = strFilter & " AND [kVili25kV] Like  'ДА" & Napr_yes & "ДА'"
    If [kVili25kV] > "" Then strFilter = strFilter & " AND [kVili25kV] Like  '" & Napr_case & "'"
    If [kVili25kV] > "" Then strFilter = strFilter & " AND [kVili25kV] Like  '" & Napr_case & "'"
    If [kVili25kV] > "" Then strFilter = strFilter & " AND [kVili25kV] Like  '*" & Napr_all & "*'"

вставьте этот
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Dim s As String
    If Not Napr_all And _
       Not (Napr_no And Napr_yes And Napr_case) And _
       Not (Not Napr_no And Not Napr_yes And Not Napr_case) Then
     s = " AND  (False"
     If Napr_no Then s = s & " OR ([kVili25kV]=""НЕТ"")"
     If Napr_yes Then s = s & " OR ([kVili25kV]=""ДА"")"
     If Napr_case Then s = s & " OR ([kVili25kV] Is Null)"
     s = s & ")"
    End If
    strFilter = strFilter & s

Объявление переменной s перенесите в начало процедуры.

ВАЖНО: Предварительно флажкам Napr_no, Napr_yes, Napr_case, Napr_all
присвойте в конструкторе начальное значение (значение по умолчанию).
Всем, кроме Napr_all - False, а Napr_all - True.
...
Рейтинг: 0 / 0
29.03.2016, 09:40
    #39202755
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,

простите, я применил ваш код, я же написал...спасибо огромное за помощь. все от неважно отличается тем, что есть пустые пустые занчения в столбцах, эти пустые значения и будут неважно, все ну это все и пустые и да и нет. Еще раз спасибо, уже почти неделю мучаюсь с этими фильтрами) щас попробую
...
Рейтинг: 0 / 0
29.03.2016, 09:43
    #39202757
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
фильр флажками
__Michelle,


Private Sub FilterForm()

Dim strFilter As String
Dim s As String

strFilter = "True"


If Form.Recordset.EOF Then Me.FilterOn = False
Form.Dirty = False


If Not IsNull(LVybor) Then strFilter = strFilter & " AND [L]=""" & LVybor & """"
If Not IsNull(NVybor) Then strFilter = strFilter & " AND [N]=""" & NVybor & """"
If Not IsNull(IS510Vybor) Then strFilter = strFilter & " AND [IS510]=""" & IS510Vybor & """"
If Not IsNull(IS520Vybor) Then strFilter = strFilter & " AND [IS520]=""" & IS520Vybor & """"
If Not IsNull(IS530Vybor) Then strFilter = strFilter & " AND [IS530]=""" & IS530Vybor & """"
If Not IsNull(R1Vybor) Then strFilter = strFilter & " AND [R1]=""" & R1Vybor & """"
If Not IsNull(R2Vybor) Then strFilter = strFilter & " AND [R2]=""" & R2Vybor & """"
If Not IsNull(R3Vybor) Then strFilter = strFilter & " AND [R3]=""" & R3Vybor & """"
If Not IsNull(R4Vybor) Then strFilter = strFilter & " AND [R4]=""" & R4Vybor & """"
If Not IsNull(R5Vybor) Then strFilter = strFilter & " AND [R5]=""" & R5Vybor & """"
If Not IsNull(VneplanVybor) Then strFilter = strFilter & " AND [vneplan]=""" & VneplanVybor & """"


If Not Napr_all And _
Not (Napr_no And Napr_yes And Napr_case) And _
Not (Not Napr_no And Not Napr_yes And Not Napr_case) Then
s = " AND (False"
If Napr_no Then s = s & " OR ([kVili25kV]=""ÍÅÒ"")"
If Napr_yes Then s = s & " OR ([kVili25kV]=""ÄÀ"")"
If Napr_case Then s = s & " OR ([kVili25kV] Is Null)"
s = s & ")"
End If




strFilter = strFilter & s

Me.FilterOn = True



End Sub
все равно выдает все ту же ошибку..(
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / фильр флажками / 25 сообщений из 66, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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