Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Сложение, вычитание, умножение, деление, проценты |
Автор: Sett 19.4.2005, 22:47 |
Доброго времени суток Всем! У меня вопрос, делаю базы, пользуюсь компонентами: Table1, DataSource1 and DBGrid1. Вопрос заключается вот в чём, в принципе понемногу осваиваю возможности что гдето придумываю и вроде всё получается. Но ни как не могу разобраться как можно вести подсчёт ячеек, то есть в одном столбце есть много цифр, меня интересует как сделать так чтобы данный столбец посчитался (сложился, умножился, разделился, - не важно) сам по себе и вывел СУММУ в каком нибудь Label1.Caption ? Друзья мои кто может помогите, уже и не знаю что придумать у самого не получается вообще! |
Автор: Петрович 19.4.2005, 23:11 |
Используй вместо tDBGrid например tDBGridEh из библиотеки EhLib. Там есть подсчет агрегативных функций. Либо пользуйся SQL-запросами с агрегативными функциями. |
Автор: DimW 20.4.2005, 07:53 | ||||||||||
Сам пользуюсь этой библиотекой. Библиотека просто супер!!! Но Sett кликать мышью можно научиться всегда, а вот понять как это насамом деле работает для тебя будет наверное лучше... Тем более
так вот: допустим Table1 возвращает все записи из таблицы Table_Name; допустим тебе нужно подсчитать сумму поля Field_name из таблицы Table_Name; кидаешь на форму Query и прописываешь SQL:
при выполнении Query возвратьт сумму по полю Field_name в SUM_FIELD_NAME. Затем ты хочешь:
При нажатии на кнопку или еще что нить.... :
З.Ы. главное чтобы Table и Query возвращали одинаковый набор данных т.е. условия выбора данных были одинаковые... |
Автор: offline 20.4.2005, 17:42 |
действительно, EhLib супер, ставь и не будет головных болей. можно как посоветовал DimW но это SQL. Если ты с ним не знаком, то есль оди выход, но это на рациональный способ. Повесь на обработчики событий компонента DataSource цикл, который пробегает от первой записи и до последней, вычисляет нужные операции и скидывает значения куда тебе нужно, но это не красивый способ, хотя работает правильно ![]() |
Автор: DimW 21.4.2005, 07:33 | ||||
еще какой!!!!
но долго!!! И вообще если человек хочет заниматься БД, то SQL это язык без которого не возможно построить грамотное приложение!!! |
Автор: offline 21.4.2005, 12:34 | ||
Согласен на все 100% Но если человек только начал разбираться, а проект горит, то пусть выкрутиться некрасивыми методами. А уж когда овладеет секретом SQL ![]() |
Автор: Sett 21.4.2005, 22:32 |
Я благодарен, за помощь. Но критики то зачем столько по поводу, как я программирую. Я начинающий, далеко не любитель, а видь разница огроманая (начинающий - любитель). Освоюсь возмусь за SQL, но пока по простому. Да, kirilllius, подскажи пожалуйста как делать цикл, любой простой пример, а то не знаю как ![]() И если можешь покажи пожалуйста пример, какой нибудь математической функции, типа: 2+2=4 2*8=16 18 поделить на 6 = 3 //////////////////// в одно Edit'e.Text= 2 функция сложить в другом Edit'e.Text= 3 нажимаем кнопку и получаем ответ в Label1.Caption = 5 |
Автор: DimW 22.4.2005, 07:29 | ||||
Label1.Caption:=FloatToStr(StrToFloat(Edit1.text)+StrToFloat(Edit2.text)); или StrToInt для целых чисел.
Ды некто тебя не критекует, просто пытаемся помоч... ![]() Добавлено @ 07:37 вопрос был не комне, но отвечу по поводу цикла:
Так можно просуммировать поле. |
Автор: Петрович 22.4.2005, 12:19 | ||||||
Правильнее будет:
Добавлено @ 12:21 А еще, что-бы побыстрее работало, можно сделать так:
|
Автор: Sett 25.4.2005, 23:28 |
Очень благодарен. Спасибо! |