Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49

Listbox - multiple select

08.12.2010, 08:31. Показов 3459. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется ASP-страница и база MS Access.
На странице имеется несколько листбоксов. Раньше мне нужно было заносить только одно выбранное значение из каждого листбокса.
Поля в таблице, куда заносились значения, были типа integer.
Затем я производил Count значений в базе на основе определенного критерия с помощью SQL-запроса. Это было легко.
Теперь задача изменилась. Требуется небольшая модернизация.
В базу должно заноситься по несколько значений из листбокса. А листбоксов-то несколько. Исходя из этого, либо я должен изменить тип поля на text или memo, либо же должно быть какое-то иное решение, но при сохранении возможности делать подсчет. Насколько я понимаю, с текстовым полем это будет практически невозможно.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2010, 08:31
Ответы с готовыми решениями:

Фильтр в форме и использованием ListBox. Как фильтвовать по нескольким значениям (multiple choise)?
Всем добрый день. Необходимо создать фильтр в главной форме, который отбирает записи из подчиненной формы по двум и более элементам,...

получить все записи из <select multiple='multiple'
как через JQUERY получить все записи из &lt;select multiple='multiple'

<SELECT ... MULTIPLE>...</SELECT> Как вытащить всё что выбрано?
Есть форма SELECT c MULTIPLE ON. Как в ASP вытащить всё что выбрал пользователь? (Желательно на VBScript)

22
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
09.12.2010, 12:37
Пусть на Вашей форме - 2 списка ('листбокса').
А не хотите ли последовально 'производить Count значений в базе на основе определенного критерия с помощью SQL-запроса' для каждой выделенной пары (вот почему было принято 2 списка) значений? Или перебирать все возможные сочетания выделенных значений в списках (это в вопросе не оговаривалось). При этом нужно запоминать результат каждого 'проиведения Count значений', а затем его обработать (усреднить, просуммировать и т. д.).
Это чтобы не менять структуру и идеалогию Вашей БД...
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 07:09  [ТС]
Спасибо.
А если их не два, а три или пять....

Ситуация такая. Предположим, имеется поле типа text.
Запись в этом поле выглядит примерно так:

Fieldtest

record1: 23, 45, 4, 16
record2: 31, 1, 9, 45, 91
........................
recordN: 56, 12, 87, 41, 45

Как я могу делать Count идентичных значений, используя текстовое поле. С полем типа integer, где в каждой записи только одно число проблем нет, но вот с текстовым....
Если бы можно было подсчитывать значения с помощью SQL-запроса именно в таком виде, т.е. с текстовым полем, то с большим кол-ом листбоксов с множественным выбором тоже никаких проблем. Вопрос отпадет сам собой.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
10.12.2010, 09:16
1. Что означает загадочная фраза 'производить Count значений в базе'?
2. Опишите боле подробно существующую реализацию: как Вы используете (одинарные) значения, выделенные в разных списках (как формируете условие WHERE)?
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 10:43  [ТС]
SQL
1
SELECT COUNT(Field1) AS CountOfField1, Field2 FROM Tab1 GROUP BY Field2
COUNT работает только с числами, а если поле field1 текстовое ? Что в этом случае можно сделать ? Вышеуказанная SQL конструкция должна работать однозначно.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
10.12.2010, 11:16
Может быть я и зануда, но: что вы делаете со значениями, выделенными в списках? Остановимся на существующей реализации.
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 12:12  [ТС]
Они попадают в базу в след. виде:

record1: 23, 45, 4, 16
record2: 31, 1, 9, 45, 91
........................
recordN: 56, 12, 87, 41, 45

Далее мне нужно подсчитать кол-во вхождений, т.е.:

1 - 1 шт.
4 - 1 шт.
9 - 1 шт.
12 - 1 шт.
16 - 1 шт.
23 - 1 шт.
31 - 1 шт.
41 - 1 шт.
45 - 3 шт.
56 - 1 шт.
87 - 1 шт.
91 - 1 шт.

Если бы был всего один листбокс, то можно было бы всего-навсего сделать цикл и заносить все выбранные в листбоксе значения по порядку. Но если больше одного листбокса, как это и имеет место быть в моем случае, то тут я попадаю в тупик.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
10.12.2010, 12:39
Вы можете чётко описать существующую структуру? Я именно этого от Вас пытаюсь добиться...
Моё впечатление таково:
На форме существует 3 списка: Список1, Список2, Список3.
Пользователь выделяет по одному значению в каждом списке и нажимает какую-то кнопку.
Вы программно вносите в некоторую таблицу 3 записи: значениеСписка1, значениеСписка2, значениеСписка3.
После этого Вы исполняете некоторый запрос, который подсчитывает кол-во вхождений. А далее эти результаты снова используются при отработке какого-то другого запроса.
Вопрос № 2: как результаты I запроса используются во II запросе?
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 12:49  [ТС]
Если бы только пользователь выбирал из каждого списка по одному значению, я бы не сидел на этом форуме.
Списков несколько. И пользователь выбирает по несколько значений из каждого списка.

Например, результирующая таблица.

Code
1
2
3
4
5
6
7
Table1
 
             Field1 (знач. из списка1)   Field2 (знач. из списка2)
record1:        23, 45, 4, 16           | 3, 5, 41, 11
record2:        31, 1, 9, 45, 91        | 2, 5, 8, 4, 44
........................
recordN:        56, 12, 87, 41, 45      | 3, 6, 8, 22, 41
Проблема в том, чтоб, используя именно эту структуру базы, т.е. текстовые поля Field1 и Field2, а не поля числового типа, производить тот Count, который я пояснял выше.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
10.12.2010, 13:00
Послушайте, я пытаюсь выяснить что у Вас как работает (или работало до того, как Вы начали переделывать на выбор нескольких значений в списках) для того, чтобы подсказать как решить проблему минимальными переделками, а не переделкой всей структуры базы.
Я подозреваю, что Вы несколько не поняли мой ответ 01.10.2004 13:00, но я не могу быть полностью уверенным в его применимости, пока не получу от Вас ясной картины.
Поэтому, потрудитесь ответить на вопрос от 02.10.2004 13:02
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 13:15  [ТС]
Раньше было так.

Table1
Field1 (знач. из списка1) Field2 (знач. из списка2)
record1: 23 | 3
record2: 31 | 2
........................
recordN: 56 | 41

Тип поля Field1 - integer; Field2 - integer

А теперь следующее.

Table1
Field1 (знач. из списка1) Field2 (знач. из списка2)
record1: 23, 45, 4, 16 | 3, 5, 41, 11
record2: 31, 1, 9, 45, 91 | 2, 5, 8, 4, 44
........................
recordN: 56, 12, 87, 41, 45 | 3, 6, 8, 22, 41

Тип поля Field1 - text; Field2 - text

Вопрос только один. Как делать при необходимости Count в условиях нынешней ситуации. Т.е. с текстовыми полями.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
10.12.2010, 13:34
А что такое record1, record2, ..., recordN? Чем определяется кол-во записей?
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 13:43  [ТС]
Сколько юзер нашлепает, столько и будет записей.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
10.12.2010, 13:52
Ответ не ясен. Идея такова: можно ли каждую выделенную строку в списке писать в новую запись? В смысле (из примера 02.10.2004 13:38):

Table1
Field1 (знач. из списка1) Field2 (знач. из списка2)
record1: 23 | 3
record2: 45 | 5
record3: 4 | 41
record4: 16 | 11
record5: 31 | 2
record6: 1 | 5
record7: 9 | 8
........................
recordN: 45 | 41
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 13:56  [ТС]
Каким образом, если в списках окажется разное кол-во выбранных значений ?
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
10.12.2010, 14:02
Вы можете как-то по-подробнее объяснить механизм работы?
Можно ли сказать, что Список1 - это наименования, а Список2 - типы изделий?
Или можете мне прислать Вашу базу или Вашу форму и таблицы-источники для списков и для подсчёта Count?
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
10.12.2010, 21:04  [ТС]
Присылать базу никакого смысла.
Я уже объяснил. Все предельно просто.
Список1 - список каких-то, скажем, наименований, а Список2 - список артикулов.
В базу в поля Field1 и Field2 идут, соответственно, выбранные значения (option values) Списка1 и Списка2 через запятую.
В след. виде
'2, 6, 11, 23' в Field1
'4, 7, 12, 48' в Field2
Как мне делать Count в случае текстовых полей Field1 и Field2 ?
Это вопрос, скорее всего, конкретно по SQL-запросу.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
11.12.2010, 10:07
Дело в том, что с текстовым полем Вы ничего не сделаете. В этом случае пожалуй единственный выход - массив и ручной подсчёт кол-ва вхождений.
SQL из текстового поля извлекать данные просто так не сможет. Для этого нужно будет написать собственную функцию, но насколько я смог понять исходя из Вашей задачи это не возможно...
Вы можете в качестве примера написать несколько осмысленный значений, выбранных в Списке1 и Списке2, а затем расписать промежуточный массив и результат.
Например, что будет, если в Списке1 выделены значения 'Татра', 'Мерседес', 'КРаЗ', а в Списке2 - 'грузовые', 'легковые', если известно, что только 'КРаЗ' никогда не выпускал легковые автомобили.
0
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
12.12.2010, 07:20  [ТС]
Список1 и Список2 никак не связаны между собой, поэтому неважно, выпускал КрАЗ легковые машины или нет.
Если у меня всего один Список, то я могу сделать поле Field1 типа integer и запихать все выбранные из Списка1 значения простым циклом. Но Списков-то два или более. В случае, если кол-во выбранных в Списке1 и Списке2 значений не совпадает, что делать в этом случае.
Конечно, если б можно было каким-то образом сделать подсчет из поля с текстовым типом, то все было бы в ажуре.
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
12.12.2010, 08:55
Приведите пример...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2010, 08:55
Помогаю со студенческими работами здесь

<select multiple>
Всем привет! Каким образом можно обрабатывать &lt;select multiple name=iii&gt; через POST еcли в iii помещается только последнее значение....

Select multiple
Нужен комоокс с возможностью множественного выора Написал так: &lt;select multiple=&quot;multiple&quot; id=&quot;category&quot; &gt;...

select multiple , просмотр
Привет! Я уже писала один пост ниже, но, наеврное, он сложный иили никому не хотелось сидетьи разбираться в нём. Мне надо изменить...

Select multiple отправка запроса
Доброго времени суток есть следующая форма &lt;form action=&quot;/prodazha&quot; onsubmit=&quot;connectFields(this); return false;&quot;...

Цвет выделения в select multiple
Вопрос: как поменять цвет выделения в select'е с стандартного темно-синего на другой?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru