|
0 / 0 / 0
Регистрация: 26.02.2010
Сообщений: 49
|
|
Listbox - multiple select08.12.2010, 08:31. Показов 3459. Ответов 22
Метки нет (Все метки)
Имеется ASP-страница и база MS Access.
На странице имеется несколько листбоксов. Раньше мне нужно было заносить только одно выбранное значение из каждого листбокса. Поля в таблице, куда заносились значения, были типа integer. Затем я производил Count значений в базе на основе определенного критерия с помощью SQL-запроса. Это было легко. Теперь задача изменилась. Требуется небольшая модернизация. В базу должно заноситься по несколько значений из листбокса. А листбоксов-то несколько. Исходя из этого, либо я должен изменить тип поля на text или memo, либо же должно быть какое-то иное решение, но при сохранении возможности делать подсчет. Насколько я понимаю, с текстовым полем это будет практически невозможно.
0
|
|
| 08.12.2010, 08:31 | |
|
Ответы с готовыми решениями:
22
Фильтр в форме и использованием ListBox. Как фильтвовать по нескольким значениям (multiple choise)?
<SELECT ... MULTIPLE>...</SELECT> Как вытащить всё что выбрано? |
|
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 [ТС] | ||||||
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 [ТС] | ||||||
|
Если бы только пользователь выбирал из каждого списка по одному значению, я бы не сидел на этом форуме.
![]() Списков несколько. И пользователь выбирает по несколько значений из каждого списка. Например, результирующая таблица.
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
|
|
| 12.12.2010, 08:55 | |
|
Помогаю со студенческими работами здесь
20
<select multiple> Select multiple select multiple , просмотр Select multiple отправка запроса Цвет выделения в select multiple Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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(), которая. . .
|