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

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

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

Вариант норм, но у мне актуальней список, в любом случае спасибо, возьму на заметку
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #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
Выбор нескольких вариантов при помощи списка
    #39258004
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Retvisansdku,

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

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

А это можно использовать для обычной ленточной формы?
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #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
Выбор нескольких вариантов при помощи списка
    #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
Выбор нескольких вариантов при помощи списка
    #39259055
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функцию вижу. А вот где Вы её применяете?
и какие записи Вы хотите отобрать (условия мягко говоря странные-strFilter не объявляется,не инициализируется-если бы в редакторе установили Option Explicit он бы её не "проглотил")
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259059
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:кстати а что возвращает FilterForm() ?
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #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
Выбор нескольких вариантов при помощи списка
    #39259066
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и да, вдогонку
у меня в портянке несколько вариантов как я пытался сделать мультивыбор для списка
и в последнем случае, который не закомментирован у меня, получается следующая шляпа
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259165
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
If Not IsNull(InstrVybor) Then strFilter = strFilter & " AND [Instr_id]=""" & InstrVybor & """ " Else strFilter = strFilter & " or [Instr_id]=""" & InstrVybor & """ "


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

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

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

http://www.sql.ru/forum/actualfile.aspx?id=19316206] Приложенный файл (tmp.rar - 43Kb)
можно чуть поподробней?)
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #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
Выбор нескольких вариантов при помощи списка
    #39259454
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 4 строке комментариев " пустые" вместо " непустые"
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259576
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

спасибо огромное, увидел
щас попробую разобраться
ну и бд выложить
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259634
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Спасибо за помощь,но когда я начал делать как у вас в примере сделано, тот что Вы скидывали первым, но возникла следующая проблема: у меня в форме данные нескольких таблиц, и я выбираю номера при помощи вашего списка, то вторая таблица отваливается и в форме остается только первый столбец. Пытался добавить еще данные в список, но все равно не помогло((
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259643
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Retvisan,
чё-то архив не открывается на аж на двух компьютерах
у меня а-2007
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259651
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259726
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Retvisan,
особо не вникал но:
-копия таблицы 1 вовсе не копия-даже число полей другое
-связь один-к-одному???(Вам мало поддерживаемых 255 полей?)
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259748
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если без запроса то так:
Код: vbnet
1.
2.
3.
Me.RecordSource = "SELECT Таблица2.имя, Таблица2.фамилия, Таблица1.* FROM Таблица1 " _
& "INNER JOIN Таблица2 ON Таблица1.Код = Таблица2.Код " _
& "where значение in " & strSQL

записи таблицы1 не выведутся если в таблице2 не записи с таким же кодом (поэтому поле код должно быть числовым и заполнятся значением соответствующим кодом первой таблицы (вручную или автоматически)
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259786
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

https://cloud.mail.ru/public/Eujp/rZsUgPKjE

Спасибо огромное!
Все прекрасно работает, но единственная проблема не понимаю как связать в общем фильтре мою переменную strSQL и strFilter, которая у меня используется для поля со списком, чтобы после выбора номера я мог выбрать и имя.
И кстати, после переделки этой строки
Код: vbnet
1.
DoCmd.ApplyFilter , "Instr_id in " & strSQL


случилось следующее чудо (все работает нормально) у меня в ленточной форме, где все данные свзяаны, теперь при фильтрации не пропадают данные и не пришлось даже запрос вставлять внутрь)
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259810
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Retvisan,
19316206 (читайте что Вам пишут)
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259816
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Retvisan...случилось следующее чудо....Уверен-чудес не бывает. Большего сказать не могу т.к в том, что Вы выложили поля по имени "Instr_id in " я не наблюдаю
...
Рейтинг: 0 / 0
Выбор нескольких вариантов при помощи списка
    #39259828
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

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


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