|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.02.2008, 20:45 | #1 |
Пользователь
Регистрация: 13.01.2008
Сообщений: 22
|
dgMultiSelect
dgMultiSelect-разрешает множественный выбор строк в DBGrid.
Кто-нибудь знает как сделать, чтобы после нажатия button, в гриде остались только те строки, которые были выделены (мультиселектом), т.е. своего рода получается фильтр. Или нужна програмная, последовательная "пробежка" по всем выделенным записям (мультиселект). Еще один вопросик. Как найти сумму в одном столбце т.е. не fields[0]+fields[1], a "fields[0]+fields[0]". Заранее спасибо, с уважением mma. |
26.02.2008, 22:08 | #2 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Код:
|
|
26.02.2008, 23:05 | #3 |
Пользователь
Регистрация: 13.01.2008
Сообщений: 22
|
Спасибо за ответ.
Можно, пожалуйста по 1-ому вопросу подробнее. Что то я совсем плохо владею знаниями по нему. Особенно интересно: -"то можно и фильтр составлять на основе значений столбца (столбцов) выбранных записей"; -"если по событию выделения строки заносить в некий массив значение поля, которое будет использовано в фильтре..." Спасибо, с уважением mma |
27.02.2008, 16:02 | #4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Ну, например, выбранные записи содержат некоторое поле POLE1, где ЗНАЧ1 - значение этого поля у одной записи, ЗНАЧ2 - у другой и т.д.
Тогда фильтр будет примерно таким: 'pole1='+QuotedStr(ЗНАЧ1)+' or pole1='+QuotedStr(ЗНАЧ2)+... и т.д. А с массивом - значения ЗНАЧ1, ЗНАЧ2 и т.д. будут содержаться в объявленном вами массиве, например MYMAS: ARRAY OF STRING. Должна быть также объявлена некая переменная NYMZAP - счетчик для индекса этого массива. И при выделении записи должно происходить что-то вроде: MYMAS[NUMZAP]:=ЗНАЧ11; INC(NUMZAP); Тогда составление фильтра будет примерно таким: DATASET.FILTER:=''; FOR NUMZAP:=0 TO LENGTH(MYMAS)-1 DO BEGIN IF DATASET.FILTER='' THEN DATASET.FILTER:=DATASET.FILTER+'pol e1='+QuotedStr(MYMAS[NUMZAP]) ELSE DATASET.FILTER:=DATASET.FILTER+'or pole1=' +QuotedStr(MYMAS[NUMZAP]); END; Кроме того, можно и букмарки использовать (см. тему "добавить к опред столбцу DbGrid данные" в разделе про компоненты, там тоже речь идет о мультиселекте). Но вообще - эта ваша затея с фильтрацией по выбранным записям выглядит как-то нелепо. Наверняка для достижения поставленной вами тайной цели можно применить более складный способ... Последний раз редактировалось mihali4; 27.02.2008 в 16:45. |
28.02.2008, 22:41 | #5 |
Пользователь
Регистрация: 13.01.2008
Сообщений: 22
|
Просто эта затея для удобства пользователя (думаю, что ему будет так удобнее), а вообще-просто нужна "автоматическая пробежка" по выделенным мультиселектом значениям, для отчета в MSWord.
Прикол будет если ничего не получится, и придется сказать:-к нужным вам значениям добавляйте "1", а после в фильтре наберите 1*,когда сформируете отчет, удалите перед значениями стоящую "1" . |
28.02.2008, 23:46 | #6 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
|
|