Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выбор нескольких вариантов при помощи списка / 25 сообщений из 34, страница 1 из 2
17.06.2016, 15:05
    #39257895
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Приветствую,
сложилась следующая ситуация, есть выпадающий список со списком значений, как можно сделать так чтобы я мог выбрать несколько значений при помощи него? Т.е. если у меня в выпадающем списке есть значения 1,2,3,4,5,6,7 и я выбираю сначала 1 и потом 5, то у меня в форме соответственно должны отфильтроваться значения соответствующие 1 и 5?
...
Рейтинг: 0 / 0
17.06.2016, 15:14
    #39257912
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Retvisan,
сохраняйте условие фильтра при выборе первого значения из выпадающего списка и добавляйте к прежнему условию последующее, сброс фильтра можно сделать по кнопке
...
Рейтинг: 0 / 0
17.06.2016, 15:22
    #39257923
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
guest_rusimport,

пожалуйста,можно чуть подробнее?
...
Рейтинг: 0 / 0
17.06.2016, 16:00
    #39257964
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Retvisan,
посмотрите пример, просто последовательно выбирайте из выпадающего списка числа и наблюдайте за подчиненной формой
...
Рейтинг: 0 / 0
17.06.2016, 16:09
    #39257971
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
как вариант:
...
Рейтинг: 0 / 0
17.06.2016, 16:09
    #39257972
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
guest_rusimport,

спасибо огромное! разберусь)
...
Рейтинг: 0 / 0
17.06.2016, 16:12
    #39257975
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
sdku,

Вариант норм, но у мне актуальней список, в любом случае спасибо, возьму на заметку
...
Рейтинг: 0 / 0
17.06.2016, 16:34
    #39257998
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
ПыСы.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Кнопка11_Click() ' показать все
Dim i
For Each i In Me.Список7.ItemsSelected
    Me.Список7.Selected(i) = False
Next
Me.RecordSource = "select * from таблица1"
End Sub

не называйте элементы управления "кнопка","список","поле" и т.д
...
Рейтинг: 0 / 0
17.06.2016, 16:36
    #39258004
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Retvisansdku,

Вариант норм, но у мне актуальней список , в любом случае спасибо, возьму на заметку так для списка и сделано
...
Рейтинг: 0 / 0
17.06.2016, 16:46
    #39258010
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
19210581 (для А2010 и новее)
...
Рейтинг: 0 / 0
20.06.2016, 14:50
    #39258901
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
sdku,

спасибо большое, еще разбираюсь,вроде работает)
я применил первый вариант в моей БД)
...
Рейтинг: 0 / 0
20.06.2016, 14:55
    #39258902
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
guest_rusimport,

А это можно использовать для обычной ленточной формы?
...
Рейтинг: 0 / 0
20.06.2016, 15:49
    #39258955
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Retvisan,
я написал следующий код для своей ленточной формы, но как-то не работает он)
Код: vbnet
1.
2.
3.
4.
If Not IsNull(InstrVybor) Then strFilter = strFilter & " AND [Instr_id]=""" & InstrVybor & """ "
 Else
 strFilter = strFilter & " or [Instr_id]=""" & InstrVybor & """ "
 End If 




Instr_id - столбец
InstrVybor - мой список
...
Рейтинг: 0 / 0
20.06.2016, 16:18
    #39258991
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
2жды2,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function FilterForm()
 Dim strFilter As String

 strFilter = "True"
 If Form.Recordset.EOF Then
  Me.FilterOn = False
 End If

If Not IsNull(InstrVybor) Then strFilter = strFilter & " AND [Instr_id]=""" & InstrVybor & """ "
 Else
 strFilter = strFilter & " or [Instr_id]=""" & InstrVybor & """ "
 End If

 Me.Filter = strFilter
 Me.FilterOn = strFilter <> "True"


почти весь скину сразу
...
Рейтинг: 0 / 0
20.06.2016, 17:08
    #39259055
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Функцию вижу. А вот где Вы её применяете?
и какие записи Вы хотите отобрать (условия мягко говоря странные-strFilter не объявляется,не инициализируется-если бы в редакторе установили Option Explicit он бы её не "проглотил")
...
Рейтинг: 0 / 0
20.06.2016, 17:11
    #39259059
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
вдогонку:кстати а что возвращает FilterForm() ?
...
Рейтинг: 0 / 0
20.06.2016, 17:17
    #39259062
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
sdku,

FilterForm() это общий фильтр для моей формы, где есть куча списков и переключателей,FilterForm вызывается для каждого элемента в AfterUpdate
strFilter я вроде как объявляю as string? или это не то?
вот вся портянка
Код: 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.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
Function FilterForm()
 Dim strFilter As String
 Dim s As String, _
     s1 As String, _
     s2 As String
 Dim i As Byte
 Dim tip As String
 strFilter = "True"
 If Form.Recordset.EOF Then
  Me.FilterOn = False
 End If
 
 'If Not IsNull(InstrVybor) Then
 'f = "[Instr_id]=" & Me.InstrVybor
 'Else
 'f = f & " or [Instr_id]=" & Me.InstrVybor
 'strFilter = strFilter & " OR [Instr_id]=" & " AND [Instr_id]=""" & InstrVybor & """ "
 'End If
 'strFilter = strFilter & f
 
 'If Not IsNull(InstrVybor) Then strFilter = strFilter & " AND [Instr_id]=""" & InstrVybor & """ "
 'Else
 'strFilter = strFilter & " or [Instr_id]=""" & InstrVybor & """ "
 'End If
 
If f = "" Then
f = "Instr_id=" & Me.InstrVybor
Else
f = f & " or Instr_id=" & Me.InstrVybor
End If
strFilter = strFilter & f
 
 For i = 1 To 11
  s = Choose(i, "L", "N", "IS510", "IS520", "IS530", "R1", "R2", "R3", "R4", "R5", "Vneplan")
  If Not IsNull(Me(s & "Vybor")) Then
   strFilter = strFilter & " AND [" & s & "]=""" & Me(s & "Vybor") & """"
  End If
 Next
 For i = 1 To 7
  s = ""
  s1 = Choose(i, "Napr", "Bereg", "akum", "obes", "zazem", "nm", "tm")
  s2 = Choose(i, "kVili25kV", "Beregpit_380V", "Bortnapr_110V", "Obestochen_poezd", _
                 "Zazemlen", "Davleniev_HM", "Davleniev_TM")
  If Not Me(s1 & "_all") And _
     Not (Me(s1 & "_no") And Me(s1 & "_yes") And Me(s1 & "_case")) And _
     Not (Not Me(s1 & "_no") And Not Me(s1 & "_yes") And Not Me(s1 & "_case")) Then
   s = " AND (False"
   If Me(s1 & "_no") Then s = s & " OR ([" & s2 & "]=""&#205;&#197;&#210;"")"
   If Me(s1 & "_yes") Then s = s & " OR ([" & s2 & "]=""&#196;&#192;"")"
   If Me(s1 & "_case") Then s = s & " OR ([" & s2 & "] Is Null)"
   s = s & ")"
  End If
  strFilter = strFilter & s
 Next
 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
 
 With Me
 
        If (.vybor_tip = 1) Then
            tip = tip & " and [Tip_Poezda] Like ""B1"""
        End If
        If (.vybor_tip = 2) Then
            tip = tip & " and [Tip_Poezda] Like ""B2"""
        End If
        If (.vybor_tip = 3) Then
            tip = tip & " and [Tip_Poezda] Like ""B1 &#232; B2"""
        End If
                
    End With
    
    strFilter = strFilter & tip
 Next
 If s <> "" Then
  strFilter = strFilter & " AND (" & s & ")"
 End If
 Me.Filter = strFilter
 Me.FilterOn = strFilter <> "True"
 'Me.Caption = strFilter
End Function
...
Рейтинг: 0 / 0
20.06.2016, 17:23
    #39259066
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
и да, вдогонку
у меня в портянке несколько вариантов как я пытался сделать мультивыбор для списка
и в последнем случае, который не закомментирован у меня, получается следующая шляпа
...
Рейтинг: 0 / 0
20.06.2016, 19:22
    #39259165
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Код: vbnet
1.
If Not IsNull(InstrVybor) Then strFilter = strFilter & " AND [Instr_id]=""" & InstrVybor & """ " Else strFilter = strFilter & " or [Instr_id]=""" & InstrVybor & """ "


сделал еще такой код, он все равно фильтрует только по одному значению в моей ленточной форме, если я еще раз нажимаю, то старый выбор не сохраняется и он заново фильтрует все, забывая старую выборку
хелп
...
Рейтинг: 0 / 0
20.06.2016, 20:58
    #39259190
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Retvisan,
соберите строку WHERE и используйте её в фильтре (по-моему хороший вариант)
посмотрите это,может чё навеет:
...
Рейтинг: 0 / 0
20.06.2016, 21:08
    #39259196
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
ПыСы: А если вагонов 20 в каком месте на форме я смогу выбрать 18-ый (Ржевский молчать!!!)
...
Рейтинг: 0 / 0
21.06.2016, 00:16
    #39259249
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
sdku,

надеюсь не придется выбирать 18-й))

sdkuRetvisan,
соберите строку WHERE и используйте её в фильтре (по-моему хороший вариант)
посмотрите это,может чё навеет:

http://www.sql.ru/forum/actualfile.aspx?id=19316206] Приложенный файл (tmp.rar - 43Kb)
можно чуть поподробней?)
...
Рейтинг: 0 / 0
21.06.2016, 11:26
    #39259449
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
Retvisan,
подробней некуда
Код: 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.
65.
66.
67.
Private Sub my()
Dim strsql, a, b, c, d
If IsNull(Me.krit1) Or Me.krit1 = "" Then 'текстовое.Если поле фпьтра krit1(под надписью ctl1-см.свойства поля> вкладка другие> имя )NULL или пустое
        a = Null                          'тогда a имеет это значение
    ElseIf Me.krit1 = " непустые" Then    'если в списке выбрано " непустые"
        a = " and not ctl1 is null"      'тогда a имеет это значение
    ElseIf Me.krit1 = " пустые" Then        'если в списке выбрано " непустые"
        a = " and ctl1 is null"             'тогда a имеет это значение
    Else                                    'любое другое значение из списка (например "вт")
        a = " and ctl1='" & Me.krit1 & "'"  'тогда a=" and ctl1='вт'
End If
If IsNull(Me.krit2) Or Me.krit2 = "" Then 'дата/время. Аналогично только другой синтаксис
        b = Null
    ElseIf Me.krit2 = " непустые" Then
        b = " and not ctl2 is null"
    ElseIf Me.krit2 = " пустые" Then
        b = " and ctl2 is null"
    Else
        b = " and ctl2=#" & Format(Me.krit2, "mm\/dd\/yyyy\#")
End If
If IsNull(Me.krit3) Or Me.krit3 = "" Then 'числовое. Аналогично только другой синтаксис
        c = Null
    ElseIf Me.krit3 = " непустые" Then
        c = " and not ctl3 is null"
    ElseIf Me.krit3 = " пустые" Then
        c = " and ctl3 is null"
    Else
        c = " and ctl3=" & Me.krit3
End If
If IsNull(Me.krit4) Then d = Null Else d = " and ctl4=" & Me.krit4 'логическое.Аналогично.Синтаксис как у числового только условий два-true/false
'собираем строку SQL допустим в krit1 выбрано "d",в krit2 01.03.2026
strsql = Mid(a & b & c & d, 6)  '=Mid(" and ctl1='d' and ctl2=#03/01/2016#)= "ctl1='d' and ctl2=#03/01/2016#"
If IsNull(strsql) Then          'если в фильтре (поля для ввода китериев) ничего не выбрано
MsgBox "выберите фильтр"        'сообщение
Exit Sub                        'выход из процедуры
Else                            'иначе формируется источник строк для полейСоСписком фильтра с учетом выбранного фильтра
Me.krit1.RowSource = "SELECT top 1 ' непустые' FROM Таблица1 UNION SELECT top 1 ' пустые' FROM Таблица1 UNION select ctl1 from таблица1 where " & strsql & " and not ctl1 is null group by ctl1"
Me.krit2.RowSource = "SELECT top 1 ' непустые' FROM Таблица1 UNION SELECT top 1 ' пустые' FROM Таблица1 UNION select ctl2 from таблица1 where " & strsql & " and not ctl2 is null group by ctl2"
Me.krit3.RowSource = "SELECT top 1 ' непустые' FROM Таблица1 UNION SELECT top 1 ' пустые' FROM Таблица1 UNION select ctl3 from таблица1 where " & strsql & " and not ctl3 is null group by ctl3"
DoCmd.ApplyFilter , strsql      'применение фильтра
End If
End Sub
Private Sub krit1_AfterUpdate()
Call my                         'вызов(выполнение) процедуры my при обновлении поля "krit1"
End Sub
Private Sub krit2_AfterUpdate()
Call my                         'вызов(выполнение) процедуры my при обновлении поля "krit2"
End Sub
Private Sub krit3_AfterUpdate()
Call my                         'вызов(выполнение) процедуры my при обновлении поля "krit3"
End Sub
Private Sub krit4_AfterUpdate()
Call my                         'вызов(выполнение) процедуры my при обновлении поля "krit4"
End Sub


Private Sub ShowAll_Click() 'кнопка "показать все"
DoCmd.ShowAllRecords        'показать все
Me.krit1 = Null             'очистить
Me.krit2 = Null             'все
Me.krit3 = Null             'поля
Me.krit4 = Null             'фильтра
'задать источники строк для полейСоСписком фильтра при отображении всех записей
Me.krit1.RowSource = "SELECT top 1 ' непустые' FROM Таблица1 UNION SELECT top 1 ' пустые' FROM Таблица1 UNION select ctl1 from таблица1 where not ctl1 is null group by ctl1"
Me.krit2.RowSource = "SELECT top 1 ' непустые' FROM Таблица1 UNION SELECT top 1 ' пустые' FROM Таблица1 UNION select ctl2 from таблица1 where not ctl2 is null group by ctl2"
Me.krit3.RowSource = "SELECT top 1 ' непустые' FROM Таблица1 UNION SELECT top 1 ' пустые' FROM Таблица1 UNION select ctl3 from таблица1 where not ctl3 is null group by ctl3"
End Sub

Но чё-то мне кажется что Вы неправильно создали таблицы(структуру БД) а теперь эти ошибки лезут наружу
Если есть желание выложите базу и опишите задачу(и)
...
Рейтинг: 0 / 0
21.06.2016, 11:30
    #39259454
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
В 4 строке комментариев " пустые" вместо " непустые"
...
Рейтинг: 0 / 0
21.06.2016, 13:08
    #39259576
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор нескольких вариантов при помощи списка
sdku,

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


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