Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1285100963
Юрий
2010-09-22 00:29
2011.01.02
С днем рождения ! 22 сентября 2010 среда


15-1285066875
Нехочуха
2010-09-21 15:01
2011.01.02
О пользе высшего образования.


2-1286570962
Andrey K
2010-10-09 00:49
2011.01.02
Как фиксировать изменения в TMemo.


2-1286622237
v_a_belousov
2010-10-09 15:03
2011.01.02
RichEdit загрузка документов с объектами


15-1284971610
tesseract
2010-09-20 12:33
2011.01.02
Свершилось товарищи. ShareWare процессор.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский