Текущий архив: 2005.10.09;
Скачать: CL | DM;
Вниз
IBDataset и аггрегатные функции Найти похожие ветки
← →
fedor (2005-08-21 19:00) [0]Привет всем. Подскажите кто-нибудь как правильно использовать аггрегатные функции в IBDataset. В книжках толкового описания этого нет, да и в сети бедновато(а может не видел). Сам же делаю так:добавляю поле,тип Aggregat, в поле Expression пишу sum(имя_поля), указываю ключевое поле, Active=true. Вешаю на DBText-при запуске ничего нет. Может что не так?
← →
_dimka © (2005-08-22 09:22) [1]select sum(имя_поля) as name from table вроде так
← →
fedor (2005-08-22 17:39) [2]Дело в том, чтобы значение суммы еще и в DBGride отображалось.Т.е. для каждой записи есть данные в присоединенной таблице по которым и получаем сумму. Но ведь если в компоненте есть возможность сосдавать такие аггрегатные поля, мне кажется удобнее использовать их. Вот только бы научиться их использовать. ХЭЛП!!!
← →
stone © (2005-08-22 17:42) [3]
> Т.е. для каждой записи есть данные в присоединенной таблице
> по которым и получаем сумму.
Эту сумму надо получать именно в запросе.
← →
fedor (2005-08-22 18:00) [4]Запрос на отобюражение таблицы например select * from table. А как же каждый раз еще и запрос на получение суммы делать, а потом снова select * from table? Ну геморно же это. Все же компонент гибче
← →
stud © (2005-08-22 18:02) [5]
> Эту сумму надо получать именно в запросе.
> select sum(имя_поля) as name from table вроде так
← →
P.N.P. © (2005-08-22 18:09) [6]>fedor (22.08.05 18:00) [4]
Сумма чего именно нужна?
Если всех значений поля в таблице - то это как-то странно.
Зачем в каждой записи показывать сумму по столбцу?
← →
fedor (2005-08-22 19:12) [7]
> P.N.P.
Подробно: есть таблица_1, в ней данные клиентов(id,фото и т.д.), к ней присоединена таблица_2, в которой у каждого клиента допустим потрачениые деньги по датам. В гриде_1 отображена таблица_1, а в гриде_2 - таблица_2 и сумма по каждому клиенту из таблица_1.
← →
P.N.P. © (2005-08-22 20:56) [8]>fedor (22.08.05 19:12) [7]
Мастер-деталь получается?
Ну, тогда нет проблем - в гриде_2 отображаем запрос
select
t2.field1,t2.field2..t2.fieldN,sum(t1.summa)
from таблица_2 t2
left outer join таблица_1 t1 on t2.код_клиента=t1.ID
group by t2.field1,t2.field2..t2.fieldN
что-то в этом роде.
К стати, в папке ...\delphi7\demos\ есть примеры.
← →
fedor (2005-08-23 13:29) [9]Люди, но всеже, неучто с управлением аггрегатными функциями через коммпонент никто незнаком?
← →
Sergey13 © (2005-08-23 13:44) [10]2[9] fedor (23.08.05 13:29)
Каким компонентом то тебе хочется? И что значит "управлением аггрегатными функциями"?
То что ты описАл в [7] под силу только ДевелоперЭкспрессовскому гриду, насколько я знаю. Но он стОит немалых денег и разобраться с ним не очень то просто.
Посмотри в сторону EhLib-овского грида - бесплатен для хСССР до версии 3.6. если качать отсюда
http://www.ehlib.com/RUS/default.htm
Там можно добавить подвал с агрегатами по набору данных (по всему).
← →
stud © (2005-08-23 13:57) [11]
> Люди, но всеже, неучто с управлением аггрегатными
> функциями через коммпонент никто незнаком?
а в чем заключается управление агрегатными функциями???
неужели такая проблема написать простенький запрос? тем более что уже и примеры привели
в чем проблема-то?
связь мастер-деталь по ид клиента и все! делов-то
← →
fedor (2005-08-26 12:45) [12]Проблема в том что мне нужно отображать значение суммы столбца в CtrlGrid"е. А в нем можно только через DBText, а результат запроса на суммирование не вывести через DBText.
Есть еще вопрос: почему после IBDataSet.DisableControl изменяется результат пересчета суммы столбца перебором First-Next?
← →
Sergey13 © (2005-08-26 13:08) [13]2 fedor
>Дело в том, чтобы значение суммы еще и в DBGride отображалось.
>Проблема в том что мне нужно отображать значение суммы столбца в CtrlGrid"е
Так что тебе нужно то? Ты на пальцах хоть объясни - без умных слов типа "управление аггрегатными функциями".
← →
fedor (2005-08-26 20:51) [14]Сорри,я опечатался насчет DBGrid"а. Записи отбражаются в CtrlGride. У каждой записи сумма приходящих средств, сумма уходящих средств, разница между ними.
← →
Sergey Masloff (2005-08-26 21:17) [15]Sergey13 © (26.08.05 13:08) [13]
Да че объяснять - в клиентском дейтасете поддерживаются свои агрегатные функции. Только в IB клайент дейтасете они глючат.
опс... тут про обычный дейтасет... Пардон сам лоханулся...
← →
fedor (2005-08-26 21:36) [16]В принципе я решил одну проблему с помощью EhLib"а. Мучает другое теперь:почему после IBDataSet.DisableControl результат пересчета суммы столбца перебором First-Next отличается от того же пересчета при IBDataSet.EnableControl?
Страницы: 1 вся ветка
Текущий архив: 2005.10.09;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.029 c