![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 13.01.2008
Сообщений: 22
|
![]()
dgMultiSelect-разрешает множественный выбор строк в DBGrid.
Кто-нибудь знает как сделать, чтобы после нажатия button, в гриде остались только те строки, которые были выделены (мультиселектом), т.е. своего рода получается фильтр. Или нужна програмная, последовательная "пробежка" по всем выделенным записям (мультиселект). Еще один вопросик. Как найти сумму в одном столбце т.е. не fields[0]+fields[1], a "fields[0]+fields[0]". Заранее спасибо, с уважением mma. |
![]() |
![]() |
![]() |
#2 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 13.01.2008
Сообщений: 22
|
![]()
Спасибо за ответ.
Можно, пожалуйста по 1-ому вопросу подробнее. Что то я совсем плохо владею знаниями по нему. Особенно интересно: -"то можно и фильтр составлять на основе значений столбца (столбцов) выбранных записей"; -"если по событию выделения строки заносить в некий массив значение поля, которое будет использовано в фильтре..." Спасибо, с уважением mma |
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 13.01.2008
Сообщений: 22
|
![]() ![]() Прикол будет если ничего не получится, и придется сказать:-к нужным вам значениям добавляйте "1", а после в фильтре наберите 1*,когда сформируете отчет, удалите перед значениями стоящую "1" ![]() |
![]() |
![]() |
![]() |
#6 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
|
|
![]() |
![]() |