Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2008, 20:45   #1
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию dgMultiSelect

dgMultiSelect-разрешает множественный выбор строк в DBGrid.
Кто-нибудь знает как сделать, чтобы после нажатия button, в гриде остались только те строки, которые были выделены (мультиселектом), т.е. своего рода получается фильтр. Или нужна програмная, последовательная "пробежка" по всем выделенным записям (мультиселект).
Еще один вопросик. Как найти сумму в одном столбце т.е. не fields[0]+fields[1], a "fields[0]+fields[0]".
Заранее спасибо,
с уважением mma.
mma вне форума Ответить с цитированием
Старый 26.02.2008, 22:08   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Как найти сумму в одном столбце т.е. не fields[0]+fields[1], a "fields[0]+fields[0]".
Например, так:
Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var sum: integer;
begin
sum:=0;
Table1.First;
while not Table1.Eof do
begin
sum:=sum+Column.Field.Value;
Table1.Next;
end;
Label1.Caption:=IntToStr(sum);
end;
Что касается первого вопроса, то можно и фильтр составлять на основе значений столбца (столбцов) выбранных записей, и SQL-запрос... Все в ваших руках. Без "пробежки" можно обойтись, если по событию выделения строки заносить в некий массив значение поля, которое будет использовано в фильтре...
mihali4 вне форума Ответить с цитированием
Старый 26.02.2008, 23:05   #3
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

Спасибо за ответ.
Можно, пожалуйста по 1-ому вопросу подробнее. Что то я совсем плохо владею знаниями по нему. Особенно интересно:
-"то можно и фильтр составлять на основе значений столбца (столбцов) выбранных записей";
-"если по событию выделения строки заносить в некий массив значение поля, которое будет использовано в фильтре..."
Спасибо,
с уважением mma
mma вне форума Ответить с цитированием
Старый 27.02.2008, 16:02   #4
mihali4
*
Старожил
 
Регистрация: 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.
mihali4 вне форума Ответить с цитированием
Старый 28.02.2008, 22:41   #5
mma
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 22
По умолчанию

Просто эта затея для удобства пользователя (думаю, что ему будет так удобнее), а вообще-просто нужна "автоматическая пробежка" по выделенным мультиселектом значениям, для отчета в MSWord.
Прикол будет если ничего не получится, и придется сказать:-к нужным вам значениям добавляйте "1", а после в фильтре наберите 1*,когда сформируете отчет, удалите перед значениями стоящую "1" .
mma вне форума Ответить с цитированием
Старый 28.02.2008, 23:46   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
просто нужна "автоматическая пробежка" по выделенным мультиселектом значениям, для отчета в MSWord
Указанный мной в рекомендованной вам теме пример как раз и послужит основой для этого. Странно, что вы этого не поняли...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц