Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.98/41: Рейтинг темы: голосов - 41, средняя оценка - 4.98
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912

Множественный выбор в КомбоБоксе

19.09.2013, 13:54. Показов 8938. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.. Подскажите как можно добиться, чтобы в комбоБоксе можно было вибирать 2 значения
т.е выбрали например Активный и Новый
Изображения
 
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.09.2013, 13:54
Ответы с готовыми решениями:

Множественный выбор
Здравствуйте, подскажите возможно ли проделать такую операцию: в таблице excel имеется поле, где записаны данные например - "Иванов,...

Множественный выбор
Добрый день! Помоги в решении следующего вопроса: есть ленточная форма, на ней поле со списком с примерно 15-ью значениями по...

Множественный выбор с ограничением
Доброго времени суток В своей деятельности в основном работаю с Access 2003. в связи с чем хотел бы задать вопрос знатокам Access версий...

29
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
19.09.2013, 14:04
В стандартном комбо никак. Или двумя комбобоксами. Можно в листбоксе (список) при установлении свойства Несвязное выделение (MultiSelect) в "Простой" или "Со связным выбором"

Фичи А2010 многозначных полей не рассматриваю и не рекомендую
2
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
19.09.2013, 14:06
Комбобокс (поле со списком) всегда связан с полем. У поля (кроме последней версии) м.б. только одно значение.
Почему бы не использовать список.

Не по теме:

Опоздал

1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
19.09.2013, 14:39  [ТС]
Про список я знаю что там возможен выбор нескольких вариантов.
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Почему бы не использовать список.
Сама идея в удобстве комбо развернулся там выбрали 2-3-4 значения он свернулся, нажали кнопку фильтра и показались только удовлетворяющие записи.

Даже если список расположить компактно(что то в виде комбо) то пропадает наглядность выбора из этого списка..

Добавлено через 10 минут
Тогда вопрос по списку
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Кнопка60_Click()
  Me.FilterOn = False
  Dim t1, t2, t3, t4, t5, t6
    If Список161 = "*" Then t1 = "True" Else t1 = "[Статус]='" & Me.Список161 & "'"
 If ПолеСоСписком54 = "*" Then t1 = "True" Else t1 = "[Статус]='" & Me.ПолеСоСписком54 & "'"
 
  If ПолеСоСписком58 = "*" Then t2 = "True" Else t2 = "[Проект]='" & Me.ПолеСоСписком58 & "'"
  If ПолеСоСписком65 = "*" Then t3 = "True" Else t3 = "[Поставщик]='" & Me.ПолеСоСписком65 & "'"
  If ПолеСоСписком86 = "*" Then t4 = "True" Else t4 = "[LeadMan]='" & Me.ПолеСоСписком86 & "'"
  If ПолеСоСписком96 = "*" Then t5 = "True" Else t5 = "[Подпроект]='" & Me.ПолеСоСписком96 & "'"
  If ПолеСоСписком132 = "*" Then t6 = "True" Else t6 = "[Фамилия]='" & Me.ПолеСоСписком132 & "'"
  Me.Filter = t1 & " And " & t2 & " And " & t3 & " And " & t4 & " And " & t5 & " And " & t6
  Me.FilterOn = True
End Sub
Вот так у меня работает фильтрация,
Как правильно сделать, фильтрацию при выборе из списка нескольких значений
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
19.09.2013, 14:49
Здесь разбирается пример Создание формы для поиска записи из таблицы
1
Эксперт MS Access
26827 / 14507 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
19.09.2013, 14:49
Источник списка фильтруется ничуть не хуже комбо. И при выборе нескольких значений, наглядность выбора безусловно выiе чем у поля со списком.

Если уж очень хочется, можно сделать иммитацию:
- располагаем текстовое поле на форме
- под ним, в точности соблюдая размеры, список у которого Visible=True
- справа кнопочка, как у комбо.
- при нажатии кнопочки, список увеличивается по высоте, полю задается Visible=False
- при вторичном нажати кнопки, список уменьшается (или визибле=фалсе), полю задается значение первого выбранного значения и Visible=True

Но это изврат. Как справедливо заметил ltv_1953, обычное, не многозначное поле, имеет только одно значение и никак не поддерживает нескольких значений.
1
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
19.09.2013, 15:28
Еще один извращенный вариант: статусов заказа немного, можно закодировать их "разумные сочетания" создав специальную таблицу-справочник: Активен или Новый, Активен или Завершен, ... . Если аккуратно подобрать им коды (так, чтобы они просто получались из исходных кодов Активен, Новый, Завершен, ... , что нибудь типа если Активен - 1, а Завершен - 3, то код Активен или Завершен 1*10+3=13) то поиск будет быстрым и то, что ищем, будет видно в поле со списком.
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
19.09.2013, 16:26  [ТС]
Так как в кодинге я зеленый, прошу помощи
я взял пример , как посоветовал
Цитата Сообщение от ltv_1953 Посмотреть сообщение
У меня несколько вопросов
1. в примере фильтрация происходит для 2- ух списков, а у меня поля См.рис
подскажите , что в функции SelToStr нужно изменить, чтобы для полей заработало
Я вот так попробовал
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Список163_Click()
Me.Список163.RowSource = " SELECT Заказ.Статус, Заказ.Проект, Заказ.Подпроект FROM Заказ WHERE Заказ IN (" & SelToStr(Me.Поле34, 0) & ") "
Me.Список163.Requery
End Sub
 
'Возвращает список из заданной (Col) колноки выбранных
'строк заданного листбокса (sList)
Private Function SelToStr(sList, sCol%) As String
On Error Resume Next 'Выключаем обработчик ошибок
 
    Dim Item
    For Each Item In sList.ItemsSelected
        SelToStr = SelToStr & ", '" & sList.Column(sCol, Item) & "'"
    Next Item
    SelToStr = Mid(SelToStr, 2)
End Function

Но при выборе в списке значения , в нем просто все исчезает
И еще вопрос в запросе обязательно все поля брать или достаточно поля по которому и будет фильтрация происходить

А вообще я тут подумал, оставить комбоБокс на месте, а если у пользователя возникнет желание несколько значений выбирать, то при зажатом Ctrl и нажатии мышки, показывать маленькую форму со списком быбора нескольких значений, в Итоге и волки целы и овцы сыты
Миниатюры
Множественный выбор в КомбоБоксе  
Вложения
Тип файла: zip db_ОКПО.zip (12.7 Кб, 46 просмотров)
1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
19.09.2013, 16:56  [ТС]
Или я совершенно не в ту сторону иду?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
19.09.2013, 17:24
Может такой пример поможет. Там фильтрация подчиненной. Выбранные все видны. См. Форма1.
Вложения
Тип файла: 7z db12.7z (12.4 Кб, 74 просмотров)
2
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
20.09.2013, 09:20  [ТС]
У вас в примере источник формы, таблица..

у моей формы запрос, (См.рис) я всегда путаюсь, как нужна делать правильно(чтобы на будущее усвоил) :нужно обращаться к запросу или к интересуещей таблицы в этом запросе, чтобы изменять источник строк, ну т.е для RecordSource..
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
       Dim s As String
    Dim n  As Variant
    If Me.Статусы.ItemsSelected.Count = 0 Then
        Me.[Список заказов].Form.RecordSource = "????"
    Else
        s = ""
        For Each n In Me.Статусы.ItemsSelected
            s = IIf(s = "", Me.Статусы.ItemData(n) _
                , s & ", " & Me.Статусы.ItemData(n))
        Next n
            Me.[Список заказов].Form.RecordSource = "SELECT  * " _
            & "FROM ????? "
'            & "WHERE Статус IN (" & s & ");"
    End If
Миниатюры
Множественный выбор в КомбоБоксе  
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
20.09.2013, 09:30
Ответ может быть только предположительным (точно, как уже Вам и указывалось, можно ответить только видя Вашу базу). Если Список заказов имя подчиненной формы и имя ее контейнера Список_заказов, то
1. Me.Список_заказов.Form.RecordSource="ПОЛ НЫЙ ЗАКАЗ С ФИЛЬТРОМ"
2. Me.Список_заказов.Form.RecordSource=""SE LECT * FROM [ПОЛНЫЙ ЗАКАЗ С ФИЛЬТРОМ] ...
1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
20.09.2013, 09:46  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Ответ может быть только предположительным (точно, как уже Вам и указывалось, можно ответить только видя Вашу базу).
БД то я выложить могу, мне не жалко, только она в accdb, а если переношу в mdb, то она перестает работать с кучей ошибок (могу выложить в mdb только необходимую форму и таблицу, но она будет открываться только в конструкторе)

Вот сейчас отладчиком смотрю, ошибку выдает на строку & "WHERE Статус IN (" & s & ");
Visual Basic
1
2
3
            Me.[Список заказов].Form.RecordSource = "SELECT  * " _
            & "FROM [ПОЛНЫЙ ЗАКАЗ С ФИЛЬТРОМ] "
            & "WHERE Статус IN (" & s & ");"
Как с этим быть?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
20.09.2013, 09:53
Опять - только предположения могут быть - Статус - это символьное значение? В примере, который Вам приведен, был не Статус, а Статус_Код - числовое поле, код соответствующего статуса.
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
20.09.2013, 09:59  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Опять - только предположения могут быть - Статус - это символьное значение?
Да символьный
на рисунке показанно, от куда берутся эти статусы
Миниатюры
Множественный выбор в КомбоБоксе  
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
20.09.2013, 10:21
Для статусов нужно создавать отдельный справочник, иначе при появлении нового статуса будет "головная боль".
И работать с их кодами, а не обозначениями (так делают в нормализованных базах). Если же хотите продолжать работать с такими статусами, посмотрите, как нужно работать в запросах с текстовыми полями при выборке Поиск по данным разного вида.
1
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
20.09.2013, 10:22  [ТС]
посмотрите в mdb , чтобы представлять как у меня все устроенно (только конструктором)
Вложения
Тип файла: rar тест.rar (67.3 Кб, 60 просмотров)
0
569 / 169 / 22
Регистрация: 18.10.2012
Сообщений: 912
20.09.2013, 14:34  [ТС]
Цитата Сообщение от ltv_1953 Посмотреть сообщение
Для статусов нужно создавать отдельный справочник, иначе при появлении нового статуса будет "головная боль".
И работать с их кодами, а не обозначениями (так делают в нормализованных базах).
Но если сейчас сделать таблицу Статусы: код, статус.. и соединить с таблицей где уже есть эти статусы в текстовом виде, получится так что , после переделки поля Статус с текстового на числовое, то данные будут некорректно выводится, т.к статусы пропадут. Не исправлять же каждый статус в ручную, на его числовое значение,.. Как избежать такой проблемы.?
0
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
23.09.2013, 09:14
duh_si, посмотрите вариант мультивыбора с помощью "псевдокомбобокса".
Для примера взята ваша, немного отрихтованная, таблица Заказ (первые 4 поля).
В базу добавлены 2 справочника.
В качестве демонстрации для 3-х полей формы Form1, источником записей которой является таблица Заказ, организован мультивыбор.
Вложения
Тип файла: rar db2.rar (33.2 Кб, 94 просмотров)
2
 Аватар для VinniPuh
9131 / 6143 / 593
Регистрация: 27.03.2013
Сообщений: 20,012
23.09.2013, 15:48
Пример - minob , Ваще не понял, да и сложноватый как мене кажется, а вот у - duh_si примерчик с шифтом и простенький и на мой взгляд удобный, менять и усложнять совершенно не к чему,

Не по теме:

Кликните здесь для просмотра всего текста
может только для одноруких будет удобно

, правда не представляю где и для чего его можно применить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.09.2013, 15:48
Помогаю со студенческими работами здесь

Множественный выбор бд сотрудники и должность
Всем привет! Помогите, пж, в решии задачки) Есть 2 таблички (во вложении) - сотрудники и должность. Есть форма, в которй...

Множественный выбор и связь многие ко многим
Спотнулся на такой проблеме: Есть список работ и список исполнителей. В каждой работе участвует несколько человек. Хочется, чтобы на...

Выбор таблицы в комбобоксе
Выбор таблицы из adotable в комбобоксе но проблема сделать условие для остальных таблиц помогите пожалуйста procedure...

Выбор записи в комбобоксе
К комбобоксу привязана таблица базы данных. Заданы свойства DisplayMember и ValueMember. Как программно выбрать нужную запись

Выбор itema в комбобоксе по нажатию на сочетания клавиш
Доброго дня! Не подскажите, как можно осуществить выбор нужного итема в комбобоксе при одновременном нажатии клавиш? например, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru