Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi и базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Selena
0 / 0 / 1
Регистрация: 22.05.2014
Сообщений: 13
#1

Вывод суммы столбцов в DBGrid - Delphi БД

08.06.2014, 01:07. Просмотров 3627. Ответов 19
Метки нет (Все метки)

На форме есть DBGrid, хочу посчитать сумму уникальных значений по каждому столбцу, при чем выбор этих уникальных столбцов осуществляется с условием. Получается выводить в отдельные Edit - для каждого столбца свой с помощью кода:
Delphi
1
2
3
4
5
6
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select distinct k_r from raz where kod like "10%" ');
ADOQuery1.open;
ksd:=form6.adoQuery1.RecordCount;
edit4.Text:=inttostr(ksd);
Это код для одного столбца, для второго и третьего такой же, только маска другая. Подскажите пожалуйста, можно ли как-то посчитанные значения выводить не в edit, а в DBGrid, чтобы одной строчкой были записаны посчитанные значения? Не могу понять как это реализовать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 01:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывод суммы столбцов в DBGrid (Delphi БД):

CheckBox и DBGrid (вывод и скрытие столбцов)?
Добрый вечер Хочу сделать такую вещь. Есть база данных. Отображаю содержимое...

Как можно посчитать разницу столбцов DBGrid и вывести в другой столбец другого DBGrid?
Я знаю как посчитать разницу в одном и том же DBGrid. Но, дело в том, что мне...

Фиксирование нужных столбцов DBGrid или скрыть относительно позиции гор. скролла DBGrid'a необходимые столбцы
Добрый день! Можно ли в компоненте DBGrid сделать фиксированными определенные...

Установка DBGrid columns при выводе через запрос SQLquery (обычный вывод в editing DBGrid Columns все настраивается)
procedure TForm1.Button33Click(Sender: TObject); //Кнопка Все вывести...

Ширина столбцов в dbgrid
Добрый день! Подскажите, как сделать так, чтобы ширина столбцов в DBGrid...

Заголовки столбцов в DBGrid
Как переименовать столбцы в DBGrid, но при этом не менять нечего в базе данных?...

19
andrey_k3
128 / 128 / 41
Регистрация: 17.10.2013
Сообщений: 333
08.06.2014, 02:21 #2
если грид обычный (без футера), то итоговую строку можно попробовать сформировать объединив запросы вывода данных в грид и подсчета суммы с помощью UNION ALL - пример
1
Cold
84 / 84 / 65
Регистрация: 22.05.2014
Сообщений: 477
08.06.2014, 02:57 #3
Установи EhLib... в DBGridEh - SumList -> True, выделяешь столбец: Footer-> ValueType->fvtSum. Никакого кода и ненадо.
1
Selena
0 / 0 / 1
Регистрация: 22.05.2014
Сообщений: 13
08.06.2014, 15:38  [ТС] #4
К сожалению, если использовать EhLib, то придется переделывать весь проект. Не очень разобралась с UNION ALL хотела сделать через COUNT, но он с DISTINCT и Access не особо работает. Сделала пока так:
Delphi
1
2
3
4
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select count(k_r) from (select k_r from raz where k_r like "10%" group by k_r) ) ');
ADOQuery1.open;
Работает, выводит. Но, опять же, только 1 столбец. Подскажите пожалуйста, как там подсоединить еще один столбец? По сути код для него будет
Delphi
1
2
3
4
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select count(k_r) from (select k_r from raz where k_r like "20%" group by k_r) ) ');
ADOQuery1.open;
Подскажите пожалуйста, как их связать можно,чтобы в DBGrid вывел в первой ячейке число из первого запроса, а во второй из второго. Или может можно ему программно задать эти значения? например, первая ячейка = ответ на запрос 1 и т.д.
0
andrey_k3
128 / 128 / 41
Регистрация: 17.10.2013
Сообщений: 333
09.06.2014, 16:28 #5
Цитата Сообщение от Selena Посмотреть сообщение
хочу посчитать сумму уникальных значений по каждому столбцу, при чем выбор этих уникальных столбцов осуществляется с условием
...
Не очень разобралась с UNION ALL
накидал таблицу (pic01). следующий запрос...
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SELECT *
  FROM users
UNION ALL                      -- этот блок добавлен для
SELECT '','','','','','',''    -- вставки пустой строки
UNION ALL
SELECT DISTINCT '',
                '',
                '',
                'Кол-во уникальных значений по условию (val1 = 1, val2 = 9, val3 >= 20):',
                ( 
                    SELECT COUNT( val1 )
                      FROM users
                     WHERE val1 = 1 
                ) 
                AS v1,
                ( 
                    SELECT COUNT( val2 )
                      FROM users
                     WHERE val2 = 9 
                ) 
                AS v2,
                ( 
                    SELECT COUNT( val3 )
                      FROM users
                     WHERE val3 >= 20 
                ) 
                AS v3
           FROM users;
... дает результат, представленный на втором скрине (pic02)
1
Миниатюры
Вывод суммы столбцов в DBGrid   Вывод суммы столбцов в DBGrid  
Selena
0 / 0 / 1
Регистрация: 22.05.2014
Сообщений: 13
13.06.2014, 23:26  [ТС] #6
andrey_k3, Спасибо, так понятнее) За эти пару дней получилось создать представление в access через оператор IIF, это представление в табличном виде в access содержит данные. Но простой запрос select * from [эта таблица] к компоненту AdoQuery почему-то вместо содержащихся значений выводит нули. Не подскажете, в чем может быть дело?
0
kavasaka
113 / 113 / 33
Регистрация: 16.04.2013
Сообщений: 687
15.09.2014, 15:12 #7
Цитата Сообщение от Cold Посмотреть сообщение
Установи EhLib... в DBGridEh - SumList -> True, выделяешь столбец: Footer-> ValueType->fvtSum. Никакого кода и ненадо.
Не работает. Вообще никакой футер не появляется! Может еще что-то надо?
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,466
15.09.2014, 15:49 #8
Да, надо. FooterRowCount = 1
1
kavasaka
113 / 113 / 33
Регистрация: 16.04.2013
Сообщений: 687
16.09.2014, 09:51 #9
Цитата Сообщение от Скандербег Посмотреть сообщение
Да, надо. FooterRowCount = 1
Уря! Появилась строка!)) Только сумма всегда 0 и Counter 0, остальные вообще пусто. Как сделать чтобы считалось, или надо еще программу писать?
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,466
16.09.2014, 10:02 #10
"выделяешь столбец:" Footer-> FieldName -> <указать имя поля, по которому требуется суммирование>
Потому как, даже если есть в столбце имя поля обозначено, то суммирование (или другие агрегатные функции) можно
осуществлять по любому другому полю, а не только по выбранному.
0
kavasaka
113 / 113 / 33
Регистрация: 16.04.2013
Сообщений: 687
16.09.2014, 18:00 #11
Цитата Сообщение от Скандербег Посмотреть сообщение
"выделяешь столбец:" Footer-> FieldName -> <указать имя поля, по которому требуется суммирование>
Потому как, даже если есть в столбце имя поля обозначено, то суммирование (или другие агрегатные функции) можно
осуществлять по любому другому полю, а не только по выбранному.
Все равно fvtSum 0, fvtCount 0, fvtAvg 0, fvtStaticText - пусто. Показывает верно только fvtFieldValue и fvtNon.
Пробовал все это по 2 полям текстовому и длинное целое (может не подходят?).
Еще ехлиб у меня в программе только грид, остальные компоненты стандартные. Может надо все Ехлиб?
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,466
16.09.2014, 18:13 #12
Footer - комплексное свойство компонента TDBGridEh и другие компоненты никакого отношения к гриду не имеют.
Может проще показать проект с БД чтобы можно было определить в чем причина неудачи.
0
kavasaka
113 / 113 / 33
Регистрация: 16.04.2013
Сообщений: 687
17.09.2014, 11:31 #13
Ок. Только это пока не проект, а мутный пример из интернета. Есть идея из него сделать шаблон для клиент-серверной задачи и выложить, может пригодится кому (мне сейчас ой как нужен, но нигде нет!). Но до этого еще огого пока)).

Чтобы оно работало: Папку из архива на диск С, запустить менеджер scktsrvr.exe (он где-то в папках делфи), сервер зарегистрировать - в папке Server reg1.bat, компоненты Ехлиб установить.
KL_PRIM.rar
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,466
17.09.2014, 12:08 #14
В комплексном свойстве DBGrid11 SumList подсвойство ExternalRecalc нужно установить в False.
1
kavasaka
113 / 113 / 33
Регистрация: 16.04.2013
Сообщений: 687
17.09.2014, 12:32 #15
Спасибо! Заработало! Похоже я сам там полазил и поменял не так как было)
0
Скандербег
17.09.2014, 12:34
  #16

Не по теме:

Кстати, слово first технологии АДО не нравится (входит в состав синтаксиса SQL) и поэтому не рекомендуется использовать его как наименование таблиц БД и их полей.

0
kavasaka
113 / 113 / 33
Регистрация: 16.04.2013
Сообщений: 687
17.09.2014, 13:01 #17
Цитата Сообщение от Скандербег Посмотреть сообщение
Кстати, слово first технологии АДО не нравится (входит в состав синтаксиса SQL) и поэтому не рекомендуется использовать его как наименование таблиц БД и их полей.
Спасибо буду знать. Это в примере было изначально. У меня среди реальных таких таблиц нет.

А подскажите еще как сделать в лукап поле грида возможность набора юзером начала текста и автоматический переход списка на подходящую строку (как на рисунке).
Вывод суммы столбцов в DBGrid
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,466
17.09.2014, 13:12 #18
В примере и надо смотреть.
0
kavasaka
113 / 113 / 33
Регистрация: 16.04.2013
Сообщений: 687
17.09.2014, 13:49 #19
Так все свойства этого поля распечатал, потом себе воспроизвел - не сработало. Наверное свойства грида еще попробовать скопировать.
0
Скандербег
927 / 886 / 292
Регистрация: 07.08.2012
Сообщений: 2,466
17.09.2014, 14:09 #20
Руководство по EhLib 6.
0
Вложения
Тип файла: zip EhLib-manual_rus_doc.zip (736.3 Кб, 37 просмотров)
17.09.2014, 14:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2014, 14:09
Привет! Вот еще темы с решениями:

Название столбцов в combobox из dbgrid
Всем привет! у меня проблема,помогите пожалуйста. есть код неповторяющегося...

Отображение столбцов в DBGrid из Access
Привет, как можно сделать вывод имен столбцов в DBGrid из Access И все, чтоб в...

Подстановка значений столбцов в DBGrid
http://f9.ifotki.info/org/2487cbc7975d11d937627a4bb162a1705f36f3109850147.jpg ...

Экспорт определёных столбцов из DBGrid в Excel
Помогите примером кода для переноса даных из DBrid в Excel. Тоисть, есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru