Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IBDataset и аггрегатные функции [D7, IB6.x]


fedor ©   (2005-08-21 19:00:00) 

Привет всем. Подскажите кто-нибудь как правильно использовать аггрегатные функции в IBDataset. В книжках толкового описания этого нет, да и в сети бедновато(а может не видел). Сам же делаю так:добавляю поле,тип Aggregat, в поле Expression пишу   sum(имя_поля), указываю ключевое поле, Active=true. Вешаю на DBText-при запуске ничего нет. Может что не так?


fedor   (2005-08-26 21:36:00) [1]

В принципе я решил одну проблему с помощью EhLib'а. Мучает другое теперь:почему после IBDataSet.DisableControl результат пересчета суммы столбца перебором First-Next отличается от того же пересчета при IBDataSet.EnableControl?


Sergey Masloff   (2005-08-26 21:17:00) [2]

Sergey13 ©   (26.08.05 13:08) [13]
Да че объяснять - в клиентском дейтасете поддерживаются свои агрегатные функции. Только в IB клайент дейтасете они глючат.

опс... тут про обычный дейтасет... Пардон сам лоханулся...


fedor   (2005-08-26 20:51:00) [3]

Сорри,я опечатался насчет DBGrid'а. Записи отбражаются в CtrlGride. У каждой записи сумма приходящих средств, сумма уходящих средств, разница между ними.


Sergey13   (2005-08-26 13:08:00) [4]

2 fedor
>Дело в том, чтобы значение суммы еще и в DBGrideотображалось.
>Проблема в том что мне нужно отображать значение суммы столбца в CtrlGrid'е
Так что тебе нужно то? Ты на пальцах хоть объясни - без умных слов типа "управление аггрегатными функциями".


fedor   (2005-08-26 12:45:00) [5]

Проблема в том что мне нужно отображать значение суммы столбца в CtrlGrid'е. А в нем можно только через DBText, а результат запроса на суммирование не вывести через DBText.
Есть еще вопрос: почему после IBDataSet.DisableControl изменяется результат пересчета суммы столбца перебором First-Next?


stud   (2005-08-23 13:57:00) [6]


> Люди, но всеже, неучто с управлением аггрегатными
> функциями через коммпонент никто незнаком?

а в чем заключается управление агрегатными функциями???
неужели такая проблема написать простенький запрос? тем более что уже и примеры привели
в чем проблема-то?
связь мастер-деталь по ид клиента и все! делов-то


Sergey13   (2005-08-23 13:44:00) [7]

2[9] fedor   (23.08.05 13:29)
Каким компонентом то тебе хочется? И что значит "управлением аггрегатными функциями"?
То что ты описАл в [7] под силу только ДевелоперЭкспрессовскому гриду, насколько я знаю. Но он стОит немалых денег и разобраться с ним не очень то просто.
Посмотри в сторону EhLib-овского грида - бесплатен для хСССР до версии 3.6. если качать отсюда
http://www.ehlib.com/RUS/default.htm
Там можно добавить подвал с агрегатами по набору данных (по всему).


fedor   (2005-08-23 13:29:00) [8]

Люди, но всеже, неучто с управлением аггрегатными функциями через коммпонент никто незнаком?


P.N.P.   (2005-08-22 20:56:00) [9]

>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-22 19:12:00) [10]


> P.N.P.

Подробно: есть таблица_1, в ней данные клиентов(id,фото и т.д.), к ней присоединена таблица_2, в которой у каждого клиента допустим потрачениые деньги по датам. В гриде_1 отображена таблица_1, а в гриде_2 - таблица_2 и сумма по каждому клиенту из таблица_1.


P.N.P.   (2005-08-22 18:09:00) [11]

>fedor   (22.08.05 18:00) [4]
Сумма чего именнонужна?
Если всех значений поля в таблице - то это как-то странно.
Зачем в каждой записи показывать сумму по столбцу?


stud   (2005-08-22 18:02:00) [12]


> Эту сумму надо получать именно в запросе.


> select sum(имя_поля) as name from table вроде так


fedor   (2005-08-22 18:00:00) [13]

Запрос на отобюражение таблицы например select * from table. А как же каждый раз еще и запрос на получение суммы делать, а потом снова select * from table? Ну геморно же это. Все же компонент гибче


stone   (2005-08-22 17:42:00) [14]


> Т.е. для каждой записи есть данные в присоединенной таблице
> по которым и получаем сумму.

Эту сумму надо получать именно в запросе.


fedor   (2005-08-22 17:39:00) [15]

Дело в том, чтобы значение суммы еще и в DBGride отображалось.Т.е. для каждой записи есть данные в присоединенной таблице по которым и получаем сумму. Но ведь если в компоненте есть возможность сосдавать такие аггрегатные поля, мне кажется удобнее использовать их. Вот только бы научиться их использовать. ХЭЛП!!!


_dimka   (2005-08-22 09:22:00) [16]

select sum(имя_поля) as name from table вроде так


Наверх

Титульная страница Поиск, карта сайта Написать письмо