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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2012, 16:47   #1
kwint3r
Пользователь
 
Регистрация: 10.11.2011
Сообщений: 17
Сообщение Арифметические операции в dbgrid

Работа осуществляется в delphi (db express simple data set+datasource+sql query)+ FB 2.5 + Ib expert
Имеется таблица, состоящая из 4 столбцов. В 3 столбце вводятся данные, а в опр. ячейках нужно сделать арифметические операции. Слышал что есть понятие calculated fields но что, то для данного примера не получилось применить. Либо есть второй вариант закинуть значения в массив, провести операции и выгрузить назад в таблицу. Собственно вопрос как лучше организовать вычисление значений ячеек
Расчет нужно сделать для полей (всего оборотных средств, всего основных средств, всего задолженность, собственный капитал и валюта баланса)
kwint3r вне форума Ответить с цитированием
Старый 10.03.2012, 01:40   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

В этом случае вычисляемое поле не поможет, т.к. это свойство столбца, а не значения ячейки.
Проще сформировать запрос, который бы рассчитывал значения в определенных строках и в гриду приходили бы уже готовые данные.
Правда, придется при этом после каждого изменения значения в столбце "Баланс фирмы" запоминать строку ввода и перечитывать данные из БД, но это не страшно, потому как таблица небольшая и тормозов не будет.
Для FB вариант запроса может выглядеть так:
Код:
SELECT ID_BALANS, name, ID_FIRMA,
    case ID_BALANS
      when 593 then (select sum(bal) from balans where id < 593)
      when 598 then (select sum(bal) from balans where id > 593 and id < 598)
      when 607 then (select sum(bal) from balans where id > 598 and id < 607)
      .... (здесь дописать)
    else BAL
    end as bal
from balans
Прик вне форума Ответить с цитированием
Старый 10.03.2012, 15:44   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ну, там же может быть не просто select sum(bal)...
Например, задолженность перед бюджетом может вычисляться из десятка разных таблиц. Имхо, я бы сделал еще одно memo-поле, в которое записал бы текст запроса для расчета (который, кстати, может изменяться время от времени).
Потом выбрал все из этой таблицы и циклом переписал ее в таблицу в памяти, походу выполняя запрос из поля с запросом и заполняя поле с итогом расчета. Потом эту таблицу в памяти и отправил в отчет.
_SERGEYX_ вне форума Ответить с цитированием
Старый 10.03.2012, 23:07   #4
kwint3r
Пользователь
 
Регистрация: 10.11.2011
Сообщений: 17
По умолчанию

Таблиц на самом деле немного будет, а вот операции нужны будут сложение вычитание и среднее арифметическое.
Смысл запроса понял в принципе что делает но, если можно поподробней как его на делфи написать через SQL.ADD
А насчет вычисляемых полей одно такое для среднего арифметического может пригодиться, так что можно пару мыслишек и про него.
Вложения
Тип файла: rar Программа v4.0.rar (1.04 Мб, 35 просмотров)

Последний раз редактировалось kwint3r; 10.03.2012 в 23:09.
kwint3r вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
десятичные арифметические операции TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 10.01.2012 18:40
Фортран арифметические операции Julila Помощь студентам 1 09.12.2011 16:07
Арифметические операции Assembler Banderas123 Помощь студентам 0 17.10.2011 21:57
Арифметические операции Assembler aly-lucenko Помощь студентам 2 25.05.2011 11:06