Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.02;
Скачать: CL | DM;

Вниз

Выбор записей   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.009 c
15-1285063413
bss
2010-09-21 14:03
2011.01.02
IXMLDomDocument, как получить полный текст XML?


2-1279887034
Mishenka
2010-07-23 16:10
2011.01.02
Как в cxVerticalGrid из DevExpress задать EditorProperties ?


2-1286522659
>|
2010-10-08 11:24
2011.01.02
Вопрос к знатокам DevExpress


2-1286535934
noob_one
2010-10-08 15:05
2011.01.02
Как из переменной перечисляемого типа получить строку


15-1284710570
stenfit
2010-09-17 12:02
2011.01.02
перевод фразы