Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с деньгами 
:(
    Опции темы
Alca
Дата 17.8.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



http://postgresql.ru.net/manual/datatype-money.html
Цитата

8.2. Денежные типы

Тип money хранит значения валюты с фиксированной дробной частью; см. Table 8-3. Точность дробной части определяется настройкой СУБД lc_monetary. Ввод значений допускается в нескольких разных форматах, включая целые числа и числа с плавающей точкой, также как и значения в типичном для валюты формате, такие как '$1,000.00'. Вывод значений обычно осуществляется в последней форме, но зависит от локали. Числовые значения без кавычек могут быть сконвертированы в тип money с помощью приведения числового значения к типу text, а затем к типу money, например: 
SELECT 1234::text::money;

Не существует простого способа выполнить обратное преобразование независимым от локали манером именованного приведённого значение типа money в какой-либо числовой тип. Если вы знаете какой символ валюты и разделитель тысяч используются, вы можете использовать regexp_replace(): 
SELECT regexp_replace('52093.89'::money::text, '[$,]', '', 'g')::numeric;


Поскольку вывод значений этого типа данных зависит от локали, загрузка данных типа money из одной в базу данных может не работать, если базы данных имеют разные настройки lc_monetary. Чтобы избежать проблем, перед восстановлением дампа в новую базу данных, убедитесь, что значение настроек lc_monetary такое же или эквивалентно значению в той базе данных, где выполнялся данный дамп.


Это сообщение отредактировал(а) Alca - 17.8.2010, 16:06


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alca
Дата 17.8.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Какой тип поля должен быть для хранения денежных величин? Случаем не double?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Akina
Дата 17.8.2010, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата

Non-quoted numeric values can be converted to money by casting the numeric value to text and then money

Вместе с сообщением об ошибке это говорит о том, что у тебя как раз имеется этот самый "non-quoted numeric", который надо преобразовывать в money ручками.
Как - не скажу, даже не спрашивай. Бо не спец.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Platov
Дата 23.8.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.7.2009

Репутация: 2
Всего: 2



А что если твои 55.55 прогнать через такую функцию:
Код

//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::ChangeSeparator(AnsiString s,char hs)
{
 AnsiString so=s;
  for(int i=1;i<=so.Length();i++)
   {
    if (so[i]==',' || so[i]=='.')
      {
       if (hs==NULL)
        so[i]=DecimalSeparator;
        else so[i]=hs;

      }
   }

 return so;
}
//---------------------------------------------------------------------------


С ораклом срабатывает.
PM MAIL   Вверх
mrbrooks
Дата 24.8.2010, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Alca @  17.8.2010,  14:47 Найти цитируемый пост)
его нет, я делаю пост на DBNavigator-e 

этот контрол ничего не делает. все операции идут на уровне TXXXTable, через DataSource. Я так понимаю ты сгенирировал TTable (т.е. строго типизированным). Поэтому каждому полю должен соответствовать класс производный от TField. Соответственно для денежного типа должен быть свой. Кури его настройки.
Ты бы ради интереса попробывал INSERT. 
Честно говоря я бы использовал параметризованные запросы. Но это дело вкуса.

Добавлено через 17 секунд
А то и хранимые процедуры!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.