![]() |
|
![]() ![]() ![]() |
|
Sett |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 20.12.2004 Где: Подольск Репутация: нет Всего: нет |
Доброго времени суток Всем!
У меня вопрос, делаю базы, пользуюсь компонентами: Table1, DataSource1 and DBGrid1. Вопрос заключается вот в чём, в принципе понемногу осваиваю возможности что гдето придумываю и вроде всё получается. Но ни как не могу разобраться как можно вести подсчёт ячеек, то есть в одном столбце есть много цифр, меня интересует как сделать так чтобы данный столбец посчитался (сложился, умножился, разделился, - не важно) сам по себе и вывел СУММУ в каком нибудь Label1.Caption ? Друзья мои кто может помогите, уже и не знаю что придумать у самого не получается вообще! |
|||
|
||||
Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 6 Всего: 55 |
Используй вместо tDBGrid например tDBGridEh из библиотеки EhLib. Там есть подсчет агрегативных функций. Либо пользуйся SQL-запросами с агрегативными функциями.
Это сообщение отредактировал(а) Петрович - 19.4.2005, 23:12 -------------------- Все знать невозможно, но хочется |
|||
|
||||
DimW |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
Сам пользуюсь этой библиотекой. Библиотека просто супер!!! Но Sett кликать мышью можно научиться всегда, а вот понять как это насамом деле работает для тебя будет наверное лучше... Тем более
так вот: допустим Table1 возвращает все записи из таблицы Table_Name; допустим тебе нужно подсчитать сумму поля Field_name из таблицы Table_Name; кидаешь на форму Query и прописываешь SQL:
при выполнении Query возвратьт сумму по полю Field_name в SUM_FIELD_NAME. Затем ты хочешь:
При нажатии на кнопку или еще что нить.... :
З.Ы. главное чтобы Table и Query возвращали одинаковый набор данных т.е. условия выбора данных были одинаковые... |
||||||||||
|
|||||||||||
offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
действительно, EhLib супер, ставь и не будет головных болей.
можно как посоветовал DimW но это SQL. Если ты с ним не знаком, то есль оди выход, но это на рациональный способ. Повесь на обработчики событий компонента DataSource цикл, который пробегает от первой записи и до последней, вычисляет нужные операции и скидывает значения куда тебе нужно, но это не красивый способ, хотя работает правильно ![]() |
|||
|
||||
DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
еще какой!!!!
но долго!!! И вообще если человек хочет заниматься БД, то SQL это язык без которого не возможно построить грамотное приложение!!! |
||||
|
|||||
offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Согласен на все 100% Но если человек только начал разбираться, а проект горит, то пусть выкрутиться некрасивыми методами. А уж когда овладеет секретом SQL ![]() |
|||
|
||||
Sett |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 20.12.2004 Где: Подольск Репутация: нет Всего: нет |
Я благодарен, за помощь. Но критики то зачем столько по поводу, как я программирую.
Я начинающий, далеко не любитель, а видь разница огроманая (начинающий - любитель). Освоюсь возмусь за SQL, но пока по простому. Да, kirilllius, подскажи пожалуйста как делать цикл, любой простой пример, а то не знаю как ![]() И если можешь покажи пожалуйста пример, какой нибудь математической функции, типа: 2+2=4 2*8=16 18 поделить на 6 = 3 //////////////////// в одно Edit'e.Text= 2 функция сложить в другом Edit'e.Text= 3 нажимаем кнопку и получаем ответ в Label1.Caption = 5 Это сообщение отредактировал(а) Sett - 21.4.2005, 22:32 |
|||
|
||||
DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 5 Всего: 44 |
Label1.Caption:=FloatToStr(StrToFloat(Edit1.text)+StrToFloat(Edit2.text));
или StrToInt для целых чисел.
Ды некто тебя не критекует, просто пытаемся помоч... ![]() Добавлено @ 07:37 вопрос был не комне, но отвечу по поводу цикла:
Так можно просуммировать поле. |
||||
|
|||||
Петрович |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 6 Всего: 55 |
Правильнее будет:
Добавлено @ 12:21 А еще, что-бы побыстрее работало, можно сделать так:
Это сообщение отредактировал(а) Петрович - 22.4.2005, 12:19 -------------------- Все знать невозможно, но хочется |
||||||
|
|||||||
Sett |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 20.12.2004 Где: Подольск Репутация: нет Всего: нет |
Очень благодарен. Спасибо!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |