Конференция "Базы" » firebird - эмулялия логических и денежных типов
 
  • помогите новичку (22.11.10 16:46) [0]
    Как правильнее эмулировать логические переменные в FireBird:
    я использовал 2 варианта: smalint (=0 or =1) и VarChar(1) (='T' or ='F').
    И про деньги: попробовал DECIMAL(15,2), но он в гриде отображается как обычное дробное число (даже если в свойствах Field'а указать currency=true). Если сделать float или double, то  приписывает к значению 'р.', но данные из decimal в float не конвертируются... Как методически правильнее "деньги хранить"?
    Да, кстати чем  DECIMAL(15,2) и NUMERIC(15,2) отличаются - в мануале абсолютно одинаковые описания...
  • Виталий Панасенко (22.11.10 17:32) [1]
    смотря, какие компоненты доступа.. FIBPLus умеют эмулировать логические поля.Т.е. объявляешь домен типа SMALLINT, в имени ОБЯЗАТЕЛЬНО должно присутствовать слово BOOLEAN(например, TBOOLEAN), фибы генерят для такого описания объект - логическое поле. И с ним можно работать, как с обычным логическим полем. А на счет денег - настрой DisplayFormat для  нужных полей
  • Inovet © (22.11.10 17:32) [2]
    В dialect 3, насколько помню, numeric в integer храниться

    numeric(18,2) в int64
  • помогите новичку (22.11.10 17:52) [3]

    > FIBPLus умеют эмулировать логические поля.Т.е. объявляешь
    > домен типа SMALLINT, в имени ОБЯЗАТЕЛЬНО должно присутствовать
    > слово BOOLEAN(например, TBOOLEAN)

    Ок, полезная инфа. Я назвал TBOOL, чуть не дотянул, но в принципе в DBGridEh есть мулька - Checked + KeyValues, которые прекрасно эмулируют любые (видимо) поля с двумя возможными значениями.


    > на счет денег - настрой DisplayFormat

    уловил, сделаю. Но с методической стороны есть ли общие рекомендации типа, деньги лучше хранить в ..., т.к. ...? Или сложившаяся практика например. Или же кто во что горазд то и пишет?
  • Виталий Панасенко (22.11.10 17:57) [4]
    только не float/double,. т.к. там числа хранятся в плавающем формате. а вот NUMERIC/DECIMAL - до 18 знаков хранятся в формате integer/int64.. т.е. соблюдается точность при расчетах и нету "хвостов"...
  • помогите новичку (22.11.10 18:09) [5]

    > только не float/double,. т.к. там числа хранятся в плавающем
    > формате. а вот NUMERIC/DECIMAL - до 18 знаков хранятся в
    > формате integer/int64.. т.е. соблюдается точность при расчетах
    > и нету "хвостов"...

    Спасибо, теперь полная ясность!
  • Inovet © (22.11.10 19:05) [6]
    > [5] помогите новичку   (22.11.10 18:09)
    > Спасибо, теперь полная ясность!

    Так у тебя база в диалект 1, наверно?
  • Petr V. Abramov © (23.11.10 11:49) [7]

    > Если сделать float или double, то  приписывает к значению
    > 'р.'

    а если винда окажется английская, то припишет $
    вот заказчик порадуется :)
  • помогите новичку (23.11.10 13:19) [8]

    > Так у тебя база в диалект 1

    когда создавал, 3 выбирал - уточню...


    > а если винда окажется английская, то припишет $вот заказчик
    > порадуется :)

    гы, точно... :)  нет, я DisplayFormat уже заюзал...
 
Конференция "Базы" » firebird - эмулялия логических и денежных типов
Есть новые Нет новых   [134431   +15][b:0][p:0]