Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];

Вниз

Разрядность   Найти похожие ветки 

 
anatolyk   (2003-07-06 11:06) [0]

Привет всем!
Помоготе с такой штукой разобраться:
в поле таблицы MSSQL хранится значение, напр. 0,50625
при отображении его в DBGRIDe (ADOQuery - Datasource - DbGrid) оно округляется до 4 знаков.(?) А мне этого не надо.
Заранее спасибо за помощь.


 
Anatoly Podgoretsky   (2003-07-06 11:20) [1]

Если не надо, то измени DisplayFormat у поля


 
anatolyk   (2003-07-06 11:39) [2]

В гриде меняю формат на 0.00000, но знаки показываются, а округление все-равно происходит. Мне кажется, что надо что-то с запрсом делать.


 
sniknik   (2003-07-06 11:46) [3]

не всегда помогает, если тип поля NUMERIC(x,x) либо DECIMAL(x,x) то там каким то боком участвует в преобразовании тип currency у которого как раз 4 знака максимум в дробной части, делает усечение.
недавно подобный вопрос был, показалось интересным, разбирался. но там хотя бы полная инфа по полям и где в каком случае усекается была... здесь продположительно. т.е. если тип стоит double или похожий то явно DisplayFormat если NUMERIC то см.выше.
не нашол тот вопрос там подробно расписал :-(( насколько помню.

в общем три варианта (если мое предположение по типам верно), первое сменить тип поля в базе,
второе отключить BCD (EnableBCD=false) тогда в преобразовании участвует тип double и все разряды проходят (но естественно возникает опасность потери точности изза разрядной сетки),
третье делать преобразование в запросе (в строку к примеру), тогда разрядность сохранится точно (некое подобие BCD). ну или к double.


 
anatolyk   (2003-07-06 11:55) [4]

Поле в базе - Float, Length=8
А вот EnableBCD было True. Посмотрел - теперь 0.00025 не округлилось, а усеклось.
Попробую вар.3, хотя со стороны Borland (Inprise) это свинство.


 
sniknik   (2003-07-06 12:12) [5]

> хотя со стороны Borland (Inprise) это свинство.
ага а разрядная сетка свинство от интел, не могли ничего лутше придумать. ;о))

ты бы не наезжал понапрасну, у вего есть свои ограничения/недостатки просто потому что без них этого самого не было бы. в конце концов не в сказке живеш.
у тебя куча вариантов, поэксперементируй, повыбирай. тип на double поменяй посмотри что будет.


 
anatolyk   (2003-07-06 12:29) [6]

Ладно, не ругайся! Я раньше писал на Clarione, там такой фигни не было: Real всегда остается Real. А программер сам, когда нужно, округляет и усекает.


 
anatolyk   (2003-07-06 12:41) [7]

Кстати, о типе.
Из нецелочисленных (в MSSQL) есть Decimal, Float и Real. Со всеми та же беда. Я думаю, надо что-то делать в Delphi.

Передача строкой - некрасиво. Запрос на выбор 10 полей - читать замучаешься. Хотелось бы работать с конструкцией SELECT * ....


 
sniknik   (2003-07-06 12:58) [8]

> Со всеми та же беда
тогда единственное, гдето у тебя DisplayFormat ограничивающий стоил. по другому просто не бывает
у меня например с real до черт знает какого знака видит...
ну к примеру создаю таблицу
CREATE TABLE IDD (ID INT Identity(1,1), db Float)
ложу запись
INSERT INTO IDD (db) VALUES (0.1234567890123456789)
делаю селект
SELECT * FROM IDD
вижу в гриде "0.123456789012346"
т.е. полное что туда попало.


 
anatolyk   (2003-07-06 13:20) [9]

Заново все переделал - пошло. И DisplayFormet работает нормально. Всем спасибо.


 
Anatoly Podgoretsky   (2003-07-06 13:36) [10]

Значит дело не в бобине



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
14-91887
Dmitriy O.
2003-07-10 07:59
2003.07.28
Хотел бы проконсультироваться


3-91676
McSimm2
2003-07-07 09:56
2003.07.28
---|Ветка была без названия|---


14-91907
reticon
2003-07-12 00:46
2003.07.28
Что в имени твоем...


6-91784
KasAlex
2003-05-22 10:12
2003.07.28
Сокеты. Соединение по порту 80 (HTTP)


1-91742
Space
2003-07-15 11:58
2003.07.28
Работа со строками





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский