Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > замена минуса на скобки


Автор: Sed0Y 20.2.2011, 18:14
Есть у меня таблица с данными, есть положительные и отрицательные числа
Как сделать, когда выводятся эти числа в грид вместо "-2" выводило "(2)" то есть если число отрицательное выводило его в скобках?
Потом я этот запрос передаю в фастрепорт, что бы вывести отчет. и там тоже нужно что бы работал такой принцип?
И что бы над ними можно было проводить арифметические операции?

Автор: Deniz 21.2.2011, 06:19
Sed0Y, смотри у поля событие onGetText там и форматируй вывод не экран.
Примерно так же в фасте.

Автор: Данкинг 22.2.2011, 01:55
Цитата(Sed0Y @  20.2.2011,  18:14 Найти цитируемый пост)
Как сделать, когда выводятся эти числа в грид вместо "-2" выводило "(2)"

Если позволяет СУБД, то можно использовать запрос с функцией замены вроде IIF.

Автор: SPrograMMer 24.2.2011, 11:56
а еще можно содать вычисляемое поле, и обработать событие OnCalcFields примерно так:
Код

begin
   with DataSet Do
      if FieldByName('NumField').AsInteger < 0 then
         FieldByName('CalcNumField').AsString := '('+IntToStr(Abs(FieldByName('NumField').AsInteger))+')'
      else
         FieldByName('CalcNumField').AsString := FieldByName('NumField').AsString
end;

Автор: pseud 24.2.2011, 12:14
Sed0Y, СУБД?

Автор: Deniz 24.2.2011, 12:52
Цитата(Данкинг @  22.2.2011,  03:55 Найти цитируемый пост)
Если позволяет СУБД, то можно использовать запрос с функцией замены вроде IIF.
Тогда не получится реализовать другое требование ТС:
Цитата(Sed0Y @  20.2.2011,  20:14 Найти цитируемый пост)
И что бы над ними можно было проводить арифметические операции? 

Все таки форматировать вывод лучше на клиенте.

Автор: cat512 24.2.2011, 13:00
Цитата

Все таки форматировать вывод лучше на клиенте.

+1
Однозначно!

Автор: chip_and_dayl 24.2.2011, 13:32
У нас будет два поля, первое поле отображает оригинальное значение, а второе, то что нам нужно. Если нужно вычислять, то  используем первое поле

Автор: Frees 24.2.2011, 13:52
можно через DisplayFormat все сделать

Код

DataSet.FieldByName('NumField').DisplayFormat.DisplayFormat := ';(#);'



Автор: chip_and_dayl 24.2.2011, 15:41
Нужно выводить в скобках, только в случае отрицательного числа smile 

Автор: Frees 24.2.2011, 15:43
Цитата(chip_and_dayl @  24.2.2011,  18:41 Найти цитируемый пост)
Нужно выводить в скобках, только в случае отрицательного числа

мой пример так и делает

Автор: Sed0Y 25.2.2011, 02:19
Прошу прощения, что не ответил сразу.
Всем больше спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)