Форум: "Базы";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
ВнизВыбор записей Найти похожие ветки
← →
Mike Kouzmine (2009-08-19 11:49) [0]Суть:
Имеется таблица с номенклатурой товаров. Необходимо сделать "наглядную" выборку из этого списка.
"Наглядная" - это два списка:
1 общий с польз. условиями выборки минус уже выбранные позиции
2 выбранные позиции
Думаю так: два дбгрида, начальные селекты
Для 1 -
select * FROM NOMETKLATURA
where (польз. фильтр)
Для 2
select * FROM NOMETKLATURA
where nom_id in (null)
(nom_id входит в первичный индекс)
При выбре селекты меняются
1 - select * FROM NOMETKLATURA
where (польз. фильтр) and nom_id not in (список выбранных)
2 - select * FROM NOMETKLATURA
where nom_id in (список выбранных)
Вроде должно работать.
Есть ли другие способы? Попроще.
← →
Медвежонок Пятачок © (2009-08-19 11:55) [1]у меня подобное делается средствами грида.
то есть изначально юзер видит датасет нефильтрованный, или с фильтрм дизайнт-тайма.
в процессе просмотра он может отбирать записи или их группы.
выбор визуализируется цветом и может активироваться (видно только выбранное)
плюс к этому он может инвертировать свое условие выбора по горячей кнопке. выбранным становится все невыбранное.
операции эти не разрушающие, можно возвращаться туда-обратно много раз
← →
Sergey13 © (2009-08-19 12:00) [2]> [0] Mike Kouzmine (19.08.09 11:49)
Ну а если второй список организовать на клиенте в таблицу в памяти? И просто копировать туда записи из первого. Что предполагается делать с выбранными записями?
Я такое делал для оформления документа одной транзакцией, а в память выбирал для подсчета промежуточных результатов и безболезненного отката. Типа клиент говорит "хочу подешевле" и можно какую то позицию поменять в окончательном заказе без засорения БД.
← →
Mike Kouzmine (2009-08-19 12:02) [3]Первое, что хотел сделать - это так как у вас, но, подумав (пока делаю для себя), решил, что для человека, который будет это делать, нагляднее будет вариант с двумя гридами. Принцип-то тот же. Визуализация другая. Вероятно.
← →
Mike Kouzmine (2009-08-19 12:05) [4]Sergey13 © (19.08.09 12:00) [2] Потом выбранные будут
UPDATE NOMETKLATURA
SET TNVED_ID = :T
WHERE NOM_ID IN (список)
← →
Anatoly Podgoretsky © (2009-08-19 12:06) [5]> Mike Kouzmine (19.08.2009 11:49:00) [0]
Вроде бы и этот не сложный.
← →
Anatoly Podgoretsky © (2009-08-19 12:06) [6]> Медвежонок Пятачок (19.08.2009 11:55:01) [1]
Для списков полностью помещающихся на экране это подходит, но для длинных списков это мучение.
← →
Mike Kouzmine (2009-08-19 12:08) [7]Anatoly Podgoretsky © (19.08.09 12:06) [5] Я не говорю, что сложный. Это то, что пришло в голову сразу.
← →
Mike Kouzmine (2009-08-19 12:09) [8]Anatoly Podgoretsky © (19.08.09 12:06) [6] Записей 10000, не более. С условиями штук 50.
← →
Mike Kouzmine (2009-08-19 12:10) [9]Anatoly Podgoretsky © (19.08.09 12:06) [6] Я спрашивал попроще для пользователя.
← →
Медвежонок Пятачок © (2009-08-19 12:22) [10]но для длинных списков это мучение.
с двумя гридами будет тоже самое мучение.
это вопрос дизайна самой формы в которой пока нет никаких пользовательских отборов
← →
Anatoly Podgoretsky © (2009-08-19 13:31) [11]> Mike Kouzmine (19.08.2009 12:10:09) [9]
Мне кажется первый вариант проще для пользователя, во первых он сразу видит список отобраных записей, а во вторых нет возможности сделать дубль.
← →
Anatoly Podgoretsky © (2009-08-19 13:32) [12]> Медвежонок Пятачок (19.08.2009 12:22:10) [10]
Не будет мучения, второй список короткий, а в первом запись убирается и можно первый список крутить как угодно не боясь снять отметку.
← →
Sergey13 © (2009-08-19 14:41) [13]> [4] Mike Kouzmine (19.08.09 12:05)
Если (список) будет длинным (типа юзер "Выбрал ФСЁ") теоретически можно налететь на превыешние длины запроса и/или на плохую производительность запроса.
Как вариант можно попробовать сделать псевдо-временную таблицу, куда писать идентификаторы записей с оригинальным признаком, например имени пользователя. Перед заполнением ее очищать от своих старых записей.
← →
Mike Kouzmine (2009-08-19 14:50) [14]Anatoly Podgoretsky © (19.08.09 13:31) [11]
Уже почти доделал
← →
MsGuns © (2009-08-20 09:11) [15]Если это номенклатура, то там должны быть и группы (подгруппы). Отображение списка деревом много упростит пользователю жизнь. Хотя, конечно, можно и предусмотреть "сплошной" режим.
В остальном делал бы как в Sergey13 © (19.08.09 12:00) [2] Например через обычный стрингрид .
← →
Mike Kouzmine (2009-08-20 10:16) [16]Sergey13 © (19.08.09 14:41) [13] Пробовал на 800 - отрабатывает менее чем за секунду.
Превышение возможно - поставлю ограничитель
← →
Mike Kouzmine (2009-08-20 10:20) [17]MsGuns © (20.08.09 09:11) [15] Это присутствует в качестве условий отбора - группа и строка для отбора из поля наименования
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2011.01.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.183 c