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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 16:26   #1
Brother Abbat
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 34
По умолчанию Итоги в SQL

Новый день новая тема )
Продолжаю ковырять свой проект (база Access, ADO connection, ADO Query) столкнулся вот с чем. В проекте сделал фильтрацию на основе sql запросов. Ну типа: если радиокнопка кликнута, то выполняется один запрос, если кликнута другая, то другой. Таблица у меня одна и поэтому запросы имеют вид:

Код:
Select * From Table Where ...
Сейчас появилась необходимость подсчитывать сумму по нескольким столбцам таблицы. Соот-но суммы должны меняться в зависимости от фильтра.
Пока придумал делать через Sum(Колонка) и прописывать в тексте запроса все остатние колонки таблицы. Может есть какой-нибудь другой способ, что то типа редактирования текста запроса в коде???
Brother Abbat вне форума Ответить с цитированием
Старый 06.12.2011, 19:26   #2
alexiz
Пользователь
 
Регистрация: 19.08.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Brother Abbat Посмотреть сообщение
Пока придумал делать через Sum(Колонка) и прописывать в тексте запроса все остатние колонки таблицы. Может есть какой-нибудь другой способ, что то типа редактирования текста запроса в коде???
Если Вы будете использовать агрегатную функцию Sum(, то надо добавлять еще GROUP BY. Пример:

Код:
select ARTIKUL,sum(SUMMA) 
from  MYTABLE
GROUP BY ARTIKUL
Однако, если выборки небольшие (до 50 записей) можно просто написать свою TotalSum в приложении и зацепить ее за Dataset.AfterOpen
Ваша благодарность может быть материальной:
WM R103871054215, WM Z710411027344, ЯндД: 410011167596676
alexiz вне форума Ответить с цитированием
Старый 07.12.2011, 09:06   #3
Brother Abbat
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 34
По умолчанию

спасибо за комментарий. Total sum не катит, записей от 0 до 1000. SQL похоже тоже отпадает, будем заставлять пользователей юзать репорты))
Brother Abbat вне форума Ответить с цитированием
Старый 07.12.2011, 09:30   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Блин, если бы у меня все пользователи были, которых можно что-то заставить. Тысячи способов эти суммы посчитать. И отдельным запросом, и програмно, и используя средства генераторов отчетов, и агрегатные поля, и некоторые гриды позволяют это сделать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.12.2011, 10:24   #5
Brother Abbat
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 34
По умолчанию

пользователи будут работать так как напишу )) а считать буду в отчете
Brother Abbat вне форума Ответить с цитированием
Старый 07.12.2011, 11:17   #6
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Цитата:
пользователи будут работать так как напишу )) а считать буду в отчете
Абсолютно не верный подход.
Ваша программа должна облегчить труд человека. Увеличить объем инфы которую он может обработать. Оптимизировать работу.
А с тем заявлением как у вас. Я вот напишу пользователю что ему надо сесть на стремянку, ногу закинуть за ухо. И левой рукой нажимать кнопки, и мне параллельно, что ему неудобно.
И не забывайте удобство работы с программой тоже говорит о качестве продукта.
А качество продукта говорит о качестве вас как программиста.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 07.12.2011, 15:21   #7
Brother Abbat
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 34
По умолчанию

Цитата:
Сообщение от rdama Посмотреть сообщение
Абсолютно не верный подход...А качество продукта говорит о качестве вас как программиста.
Согласен на все 100%, но в моем случае чуть по другому. Я не программист, я сисадмин. И пишу эту программу только потому, что начальство решило что я программист. А коли так, то я буду решать как работать конечному пользователю. Понимаю что моя точка зрения не совсем корректная, но пока она такова.
Brother Abbat вне форума Ответить с цитированием
Старый 07.12.2011, 15:47   #8
Brother Abbat
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 34
По умолчанию

к нашим баранам...будьте любезны, подкиньте идею как с помощью sql запроса посчитать сумму по столбцу датасета, если учесть что датасет основан на sql запросе типа Select * from Table Where...?
Brother Abbat вне форума Ответить с цитированием
Старый 07.12.2011, 16:29   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

проще (и, возможно, даже быстрее) выполнить ЕЩЁ один запрос к серверу:
Код:
Select sum(ПолеДляСуммирования) from Table Where...?
либо, как выше говорили (смотри пост #4) - это умеют некоторые гриды делать. А можно и в цикле пройтись по записям...

Последний раз редактировалось Serge_Bliznykov; 07.12.2011 в 16:31.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.12.2011, 16:51   #10
Brother Abbat
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 34
По умолчанию

сори за глупые вопросы, а что значит еще один запрос? Добавить еще один adoguery? и передавать в него нужный текст?
Brother Abbat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Итоги в Excel2003 IUKA2011 Microsoft Office Excel 0 04.07.2011 17:55
Итоги алексей209 Microsoft Office Excel 4 18.12.2009 23:16
Сортировка и итоги (захват чужих итогов) WIC Microsoft Office Excel 2 02.02.2009 11:54
ПРОМЕЖУТОЧНЫЕ.ИТОГИ*валюта ZORRO2005 Microsoft Office Excel 4 06.08.2008 13:06
ПРОМЕЖУТОЧНЫЕ.ИТОГИ ZORRO2005 Microsoft Office Excel 1 08.09.2007 16:18