Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Настройка логики переключений группы переключателей / 25 сообщений из 32, страница 1 из 2
11.04.2016, 16:13
    #39212787
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Приветствую!Появилась необходимость создания логики. Суть такова: есть столбцы vagon01,vagon02..., к ним имеются блоки переключателей, которые выбирают значения из столбцов положение 1-<>0;2-=0;3-все значения. Они сейчас работают по логике "и" в общем фильтре, можно ли для этих блоков переключателей, добавить блок выборки логики "и" либо "или"?


https://cloud.mail.ru/public/FoRa/uUQhuPo6C
...
Рейтинг: 0 / 0
11.04.2016, 16:42
    #39212827
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan,

обычно внутри блока действует закон (или)
меж блоками (или)

Код: vbnet
1.
2.
3.
выбрать (авто=ниссан или авто=тойота или авто=форд)
и (цвет=белый или цвет=молочный)
и (год выпуска между 1990 и 2000) из таблицы автомобилей
...
Рейтинг: 0 / 0
11.04.2016, 16:43
    #39212831
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan

обычно внутри блока действует закон (или)
меж блоками (и)

Код: vbnet
1.
2.
3.
выбрать (авто=ниссан или авто=тойота или авто=форд)
и (цвет=белый или цвет=молочный)
и (год выпуска между 1990 и 2000) из таблицы автомобилей
...
Рейтинг: 0 / 0
11.04.2016, 16:44
    #39212833
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan,

я имею ввиду к примеру такую ситуацию, когда
первый столбец второй столбец
0 1
1 0
1 1
0 1
0 0
т.е. я выберу из первого столбца все значения не "0" и из второго тоже не "0", то тогда у меня при общем фильтре получится только одна строка, а мне нужно, чтобы их получилось 4, т.е. выводился результат из двух столбцов, где не "0"(реализация логики "или")
...
Рейтинг: 0 / 0
11.04.2016, 16:45
    #39212835
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
ПЕНСИОНЕРКА,

мне нужна возможность включения логики "или" переключателем между блоками(vagon01,vagon02 и т.д.), при помощи блока переключателей
...
Рейтинг: 0 / 0
11.04.2016, 16:46
    #39212836
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan,
блин описался
*мне нужна возможность включения логики "или" переключателем между блоками(vagon01,vagon02 и т.д.),
...
Рейтинг: 0 / 0
11.04.2016, 16:58
    #39212849
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Вернее перейти с логики "и" на логику "или" между блоками пееключателей и обратно
...
Рейтинг: 0 / 0
12.04.2016, 12:56
    #39213512
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
А можно описать конечную задачу, а не путь ее решения, желательно на наглядном примере? Честно говоря, не совсем понятно, что именно требуется.

Да, и на Стеке лучше не паковать примеры 7z, там это не очень популярно ;)
...
Рейтинг: 0 / 0
12.04.2016, 13:41
    #39213581
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
MrShin,спасибо за совет) в общем есть две несколько групп переключателей, они все сведены в общий фильтр, но проблемы в том что они фильтруют данные согласно логике "и" т.е. например как в изображении у меня есть фильтр <>0 для столбца А, и для столбца С, в этом случае у меня не будет никаких записей в форме, а мне нужно, чтобы их появилось две т.е. одна для А и одна для С, т.к. в кажом столбце есть зачение, которое <>0
Вот как сделать группу переключателей, которая будет менять логику фильтраций моих групп переключателей с "и" на "или"
...
Рейтинг: 0 / 0
12.04.2016, 13:51
    #39213605
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
А что мешает формировать фильтр в зависимости от переключателя "и/или"? В одном случае в тексте формируем фильтр с "и", в другом с "или".
...
Рейтинг: 0 / 0
12.04.2016, 14:05
    #39213628
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
MrShin,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[SRC vba]With Me
    
         If (.ChooseCar3 = 1) Then
            strFilter = strFilter & " and [carriage3] not like 0"
        End If
        If (.ChooseCar3 = 2) Then
            strFilter = strFilter & " and [carriage3] like 0"
        End If
        If (.ChooseCar3 = 3) Then
            
                End If
    End With

[/SRC]
а как это прописать для фильтра переключателя?
...
Рейтинг: 0 / 0
12.04.2016, 14:29
    #39213662
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Введите дополнительный флажок FlagOrAnd.
И опять эти LIKE-и....
Код: vbnet
1.
2.
3.
4.
5.
 If ChooseCar3 <> 3 Then 
  strFilter = strFilter & _ 
              IIf(FlagOrAnd, " OR", " AND") & " [carriage3] " & _
              Choose(ChooseCar3, "<>", "=") & "0" 
 End If  
...
Рейтинг: 0 / 0
12.04.2016, 14:34
    #39213665
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Ну как-то так, только для случая ALL нужно подумать, что сделать, сейчас нет времени

Код: 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.
Dim strFilter As String
Dim strLogic As String

If Me.logic = 1 Then
    'or
    strFilter = "False"
    strLogic = " or "
Else
    strFilter = "True"
    strLogic = " and "
End If

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

If (Me.ChooseCar1 = 1) Then
    strFilter = strFilter & strLogic & "[carriage1] not like 0"
End If
If (Me.ChooseCar1 = 2) Then
    strFilter = strFilter & strLogic & "[carriage1] like 0"
End If
If (Me.ChooseCar1 = 3) Then

End If

If (Me.ChooseCar2 = 1) Then
    strFilter = strFilter & strLogic & "[carriage2] not like 0"
End If
If (Me.ChooseCar2 = 2) Then
    strFilter = strFilter & strLogic & "[carriage2] like 0"
End If
If (Me.ChooseCar2 = 3) Then

End If

If (Me.ChooseCar3 = 1) Then
    strFilter = strFilter & strLogic & "[carriage3] not like 0"
End If
If (Me.ChooseCar3 = 2) Then
    strFilter = strFilter & strLogic & "[carriage3] like 0"
End If
If (Me.ChooseCar3 = 3) Then

End If

strFilter = strFilter

Me.Filter = strFilter
Me.FilterOn = True
    
...
Рейтинг: 0 / 0
12.04.2016, 14:47
    #39213682
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
MrShin,

спасибо) разберусь)
...
Рейтинг: 0 / 0
12.04.2016, 14:51
    #39213689
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
MrShin,
а почему нельзя использовать RecordSource (наше фсе)
me.RecordSource="сформированная,в зависимости от чего-либо, строка SQL"
...
Рейтинг: 0 / 0
12.04.2016, 15:21
    #39213748
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan,

Мое сообщение 19047429 видели?
...
Рейтинг: 0 / 0
12.04.2016, 15:30
    #39213761
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
sdkuа почему нельзя использовать RecordSource (наше фсе)
Конечно можно. Там вообще есть простор для творчества, ибо код в существующем виде не блещет красотой :)
...
Рейтинг: 0 / 0
12.04.2016, 15:44
    #39213788
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
__Michelle,

да, увидел) только чуть позже...)ничего не получалось, вернулся на форум и увидел ответ на то, чем занимался целый час)идиотизм во всей красе, спасибо большое)
...
Рейтинг: 0 / 0
15.04.2016, 19:56
    #39216914
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
__Michelle,

https://cloud.mail.ru/public/6r5R/UBc8Xd93U

немного запоздал с этим сообщением. Начал делать по Вашему совету, но как-то не клеиться вылетает ошибка.
я добавил этот код к блокам переключателей
Код: vbnet
1.
2.
3.
4.
5.
If ChooseCar3 <> 3 Then 
  strFilter = strFilter & _ 
              IIf(FlagOrAnd, " OR", " AND") & " [carriage3] " & _
              Choose(ChooseCar3, "<>", "=") & "0" 
 End If 


и вывел дополнительный флажок FlagOrAnd, только не совсем понимаю как для него будут действовать значения и/или которые есть в вашем коде
...
Рейтинг: 0 / 0
15.04.2016, 22:05
    #39216965
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan,

возможноо забыли пробелы
Код: vbnet
1.
IIf(FlagOrAnd, " OR ", " AND ") & " [carriage3] " & _
...
Рейтинг: 0 / 0
15.04.2016, 22:21
    #39216971
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
ПЕНСИОНЕРКАRetvisan,

возможноо забыли пробелы
Код: vbnet
1.
IIf(FlagOrAnd, " OR ", " AND ") & " [carriage3] " & _

Ничего я не забыла, все пробелы на месте
Код: vbnet
1.
IIf(FlagOrAnd, " OR", " AND") & " [carriage3] " & _     
...
Рейтинг: 0 / 0
15.04.2016, 22:30
    #39216975
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan__Michelle,

https://cloud.mail.ru/public/6r5R/UBc8Xd93U

немного запоздал с этим сообщением. Начал делать по Вашему совету, но как-то не клеиться вылетает ошибка.
я добавил этот код к блокам переключателей
Код: vbnet
1.
2.
3.
4.
5.
If ChooseCar3 <> 3 Then 
  strFilter = strFilter & _ 
              IIf(FlagOrAnd, " OR", " AND") & " [carriage3] " & _
              Choose(ChooseCar3, "<>", "=") & "0" 
 End If 


и вывел дополнительный флажок FlagOrAnd, только не совсем понимаю как для него будут действовать значения и/или которые есть в вашем кодеЭто не добавлять надо.
Это ВМЕСТО!!!
ВМЕСТО вот этого Вашего
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
With Me 
If (.ChooseCar3 = 1) Then 
strFilter = strFilter & " and [carriage3] not like 0" 
End If 
If (.ChooseCar3 = 2) Then 
strFilter = strFilter & " and [carriage3] like 0" 
End If If (.ChooseCar3 = 3) Then 
End If 
End With 

Бегло посмотрела то, что Вы выложили.
Доколе будете эти бессмысленные LIKE множить?!
Подробнее чуть позже, сейчас некогда.
...
Рейтинг: 0 / 0
17.04.2016, 16:21
    #39217585
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
Retvisan,
Выкладываю БД с переделками.

1. Заменен источник данных формы.
Было
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT Powertrain.kVili25kV, Powertrain.Beregpit_380V, Powertrain.Bortnapr_110V, Powertrain.Obestochen_poezd, 
Powertrain.Zazemlen, Powertrain.Davleniev_HM, Powertrain.Davleniev_TM, Stage.L, Stage.N, Stage.IS510, Stage.IS520, Stage.IS530, 
Stage.R1, Stage.R2, Stage.R3, Stage.R4, Stage.R5, Stage.vneplan, 
vagony_bez_materiala.vagon01, vagony_bez_materiala.vagon02, vagony_bez_materiala.vagon03, vagony_bez_materiala.vagon04, 
vagony_bez_materiala.vagon05, vagony_bez_materiala.vagon06, vagony_bez_materiala.vagon07, vagony_bez_materiala.vagon08, 
vagony_bez_materiala.vagon09, vagony_bez_materiala.vagon10 
FROM Powertrain, Stage, vagony_bez_materiala;

Стало
Код: sql
1.
2.
3.
4.
SELECT * 
FROM Powertrain AS P INNER JOIN 
(Stage AS S INNER JOIN vagony_bez_materiala AS V ON S.Step_id=V.vagon_id) 
ON P.Power_id=S.Step_id;

Ваше
Код: sql
1.
FROM Powertrain, Stage, vagony_bez_materiala

дает 15878 * 15878 * 15878 = 4 003 016 616 152 записей. В форме даже количество записей из-за этого не показывается – не может справиться.
В каждой из этих таблиц по 15878 записей, наборы ключей для все таблиц совпадают.
Но почему во всех таблицах эти ключи – счетчики? Счетчиком этот ключ должен быть в ведущей таблице, в двух других – длинное целое.
Все три таблицы есть в схеме данных, но связей между ними нет. А надо.

2. В таблицах Powertrain и Stage изменен размер всех текстовых полей.
Было 255, стало 3.

3. В таблице vagony_bez_materiala изменен тип полей vagon01 .... vagon10.
Было Текстовый 255, стало Числовой Байт.

4. В форме добавлена кнопка СБРОС ВСЕХ ФИЛЬТРОВ. В коде – процедура обработки нажатия.
Для быстрого возврата в исходное состояние.

5. Применяемый фильтр показывается как подпись формы.
Для отслеживания и контроля фильтрации.

6. Для критериев удалены процедуры обработки AfterUpdate, вместо этого в конструкторе сделан вызов сразу FilterForm().
Для LVybor, NVybor, IS510Vybor, IS520Vybor, IS530Vybor, R1Vybor, ..., R5Vybor, VneplanVybor.
Для V1, ...., V10.

7. Для критериев групп "Высокое напряжение", ....., "Давление ТМ" добавлена предварительная процедура
"увязки галочек".

При выборе all сбрасываются остальные, при выборе ч.-л. из не-all сбрасывается all.
Чтобы не снимать "лишнее" вручную и не дергать дополнительно фильтр.

8. Переработана обработка критериев для вагонов с учетом влияния OR/AND только на вагоны.
Теперь так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 s = ""
 For i = 1 To 10
  If (Me("V" & i) <> 3) Then
   s = s & _
       IIf(s <> "", IIf(FlagOrAnd, " OR ", " AND "), "") & _
       "[vagon" & Format(i, "00") & "]" & _
       Choose(Me("V" & i), "<>", "=") & "0"
  End If
 Next


9. Ну, и некоторые "косметические" переделки кода.

_______________________________________________________
Архив из трех частей.
Посмотрите, что получилось.
Обращайте внимание на текст фильтра в заголовке формы.
Это было нужно или нет?
...
Рейтинг: 0 / 0
17.04.2016, 16:22
    #39217586
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
...
Рейтинг: 0 / 0
17.04.2016, 16:22
    #39217587
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройка логики переключений группы переключателей
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Настройка логики переключений группы переключателей / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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