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

Вниз

Маленькая проблемка - Grid округляет автоматом   Найти похожие ветки 

 
StenKz   (2002-12-10 14:18) [0]

Есть Grid, есть Dbase IV, поле number, 6 знаков до и 4 после запятой...

Так вот в при вводе в грид происходит автоматическое округление...

А надо чтобы не округляло...


 
Anatoly Podgoretsky   (2002-12-10 14:25) [1]

Не использовать Numeric это с фиксированноей запятой, а по вопросу ты хочешь с плавающей.


 
StenKz   (2002-12-10 14:52) [2]

А Numeric в другом месте через DBEdit работает, не округляет...
А что тогда использовать?


 
sniknik   (2002-12-10 15:02) [3]

попробуй к примеру TNumericField.DisplayFormat настроить.


 
Fiend   (2002-12-10 16:02) [4]

запретите использование BCD, это спасёт вас однозначно


 
Anatoly Podgoretsky   (2002-12-10 16:04) [5]

Ты бы для приличия указал бы исходные данные, как округляет, насройки свойств TField, хоть это как минимум


 
Stenkz   (2002-12-10 16:09) [6]

Пробовал криво работает... Надо написать последний ноль чтобы она не кругляла..


 
Fiend   (2002-12-10 16:10) [7]

То Stenkz
Тебе же говорят, запрети использование BCD, спасёт по любому!!!!!!!!!


 
Stenkz   (2002-12-10 16:17) [8]

То Fiend ©
А что такое BCD :)?


To Anatoly Podgoretsky ©
Работает так Пишем 156,555 получаем 156,56...
А надо 155,555


 
Fiend   (2002-12-10 16:25) [9]

Ты через что обращаешься к таблицам?
ADO или BDE?


 
Anatoly Podgoretsky   (2002-12-10 16:26) [10]

А формат поляв таблице, а настройка DisplayFormat и где жто видим в гриде или в таблице.
А если надо то почему не настроишь DisplayFormat, но если поле Nx.2 то откуда взяться третьему знаку.

По конкреннее.


 
Stenkz   (2002-12-10 16:26) [11]

To Anatoly Podgoretsky ©
настройки Tfield стандартные для Numeric


 
Stenkz   (2002-12-10 16:30) [12]

To Anatoly Podgoretsky ©
Настраивал DisplayFormat, но всёравно округляет последнюю цифру..

To Fiend © обращаюсь через BDE


 
РВА   (2002-12-10 16:30) [13]

Свойство DisplFormat для данного поля внести 0.0000 (или #0.00##)
Для Grid должно работать


 
Anatoly Podgoretsky   (2002-12-10 16:35) [14]

Как настраивал, не играй в прятки


 
sniknik   (2002-12-10 16:38) [15]

ветка живое воплощение
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1039441512&n=3
:-))

Anatoly ну че ты выеживаешся? нет чтобы сразу правильно и грамотно ответить! :о))))))


 
Fiend   (2002-12-10 16:39) [16]

To Stenkz
через SQL Explorer или BDE Administrator в настройках алиаса через который вы подключаетесь к БД, установите опцию Enable BCD в true. перезапустите программу


 
MsGuns   (2002-12-10 20:46) [17]

Ну ведь сказали же ! (Anatoly Podgoretsky © (10.12.02 16:26)
И причем здесь BCD ? Вы еще в конфигуратор полезьте и ввалите там 6 знаков после точки !

Надо задать 2 свойства у TField: DisplayFormat (0.000) и EditFormat (#.000##), а вообще настоятельно рекомендую перед постом ОКРУГЛЯТЬ введенные (а особенно вычисленные) числа

a := ROUND(a*1000)/1000; (10 в степени сколько надо точность)

Помогает ОДНОЗНАЧНО избежать больших СУММАРНЫХ (по колонке) погрешностей.

Использование BCD тоже, конечно, вариант, но есть траблы с интерпретацией сумм по таким колонкам в запросах (для BDE по крайней мере), да и места на диске они занимают больше.


 
Anatoly Podgoretsky   (2002-12-10 20:51) [18]

Второй не обязательно, а вот первое свойство ну никак не выбить из него, такое впечатление, что это нужно нам, а не ему.


 
Fiend   (2002-12-11 09:53) [19]

То MsGuns
а BCD, увжаемый MsGuns, тут при том шо вот у меня аналогичнейшая проблема была. Причём не просто там отображалось не правильно, а даже когда брал значение поля для внутреннего вычисления в клиенте (Query.FieldByName("Field1").AsFloat), то оно мне давало округлённый вариант. И шо я тока не делал, и форматировал у Query поля и много еще чего перепробовал. ничего не спасало. а вот использование BCD помогло, потому говорю не голословно. И учтите пожалуста, шо не отвергаю других вариантов решения. Просто сообщаю человеку, шо эту проблему у себя решил так то, и пусть он попробует.

С уважением, Fiend


 
Stenkz   (2002-12-11 14:07) [20]

То Fiend ©

Попробовал, но теперь BDE материться шо актуал small integer...
Это мне все таблицы перелапачивать ?


 
sniknik   (2002-12-11 15:37) [21]

разберись с DisplayFormat, а то как то странно получается у всех работает у тебя нет.

не можеш сам то ответь to Anatoly Podgoretsky © (10.12.02 16:35).
Хотя по мне и так дали информации предостаточно.


 
Stenkz   (2002-12-12 13:19) [22]

To sniknik ©
DisplayFormat насколько я понял управляет отображением числа :)
И он отображает например 156,560 а не как вводилось 156,555 :(
Он тут помойму не причём.

Так вот я выставил DisplayFormat - 0.000
EditFormat - #.000#

ИИИ всеравно округляет до двух знаков после запятой...
И происходит это именно в Гриде...


 
mike-d   (2002-12-12 13:49) [23]

Создай новый проект, брось туда TTable, TDataSource, TDBGrid. Подключи к этой гармони свою таблу. Никаких установок для полей не делай. Оживи таблицу и посмотри прямо в дизайне на результат вывода. Отвечай - что видишь по проблемному полю?


 
MsGuns   (2002-12-12 15:30) [24]

Если в поле число 1.111, в св-ве DisplayFormat указано "0.00##", нет никаких обработчиков типа OnCalcFields, OnGetText и им подобным, то дело в БД, точнее в физическом формате возвращаемых датасету данных. Кстати, а как ты знаешь, что там 3 знака после точки ? Только потому, что в контрол при вводе числа три раза нажималась (и высвечивалась) единица после точки ?


 
Anatoly Podgoretsky   (2002-12-12 17:13) [25]

Ну он в чамом начале утвержает, что у него N10.4


 
MsGuns   (2002-12-12 17:33) [26]

>Anatoly Podgoretsky © (12.12.02 17:13)
>Ну он в чамом начале утвержает, что у него N10.4

Но он даже не сообщает каким движком (компонентами) пользуется.
Если, к примеру, в качестве НД я использую SELECT ... CAST(... AS DECIMAL(12,2)), то я и получу этот самый эффект округления.




 
StenKz   (2002-12-12 17:51) [27]

To MsGuns ©
Anatoly Podgoretsky © прав у меня действительно N6,4.
Никаких OnCalcFields и OnGetText для этой таблицы не предусмотренно, но для других ьаблиц это присутствует.

To mike-d © - завтра на работе твоё предложение опробую.



 
Stenkz   (2002-12-15 15:37) [28]

To mike-d © опробовал твоё предложение...
Эффект такой же....


 
sniknik   (2002-12-15 16:51) [29]

а в самой таблице нортоном посмотреть?

p.s. тебе дают советы исходя из данных которые ты даеш. вернее из тебя их давят по капле. хочеш решить. описывай ВСЕ и подробно. Нет, ну на нет и суда нет.

p.p.s.
mike-d © (12.12.02 13:49) насколько я понял хотел выяснить что у тебя в чистом виде, без программных установок, а не предлагал решение, "Эффект такой же....", а собственно какой?.


 
Anatoly Podgoretsky   (2002-12-15 17:18) [30]

Что в конце видно в Database Desktop как в структуре таблицы, так и в гриде.
К тому же ты противоречишь, сначала N10.4 теперь говоришь N6,4
Проверь в конце все таки с помощью Database Desktop, может окажется, что Nx.2 и подробности с тебя вообще клещами вытягивать приходится


 
mike-d   (2002-12-15 17:30) [31]

Да, действительно, что-то мутно...
А вообще прав Anatoly Podgoretsky © (15.12.02 17:18) - все указывает на то, что после запятой всего два знака. Может смотрит не ту таблицу с которой работает? Меня как-то от усталости также переклинило - правлю таблу в Desktop"е, а в проге ни фига!


 
mike-d   (2002-12-15 17:55) [32]

И вдогонку - попробовал у себя смоделировать такую табл.
В DBGrid все как учили - те самые несчастные 4 после запятой (вводишь 5 - округляет до 4), а в Database Desktop ввожу данные - округляет до двух знаков (но хранит как вводили). Почему - не знаю и разбираться лень, не работаю я с BDE давно и навсегда.


 
StenKz   (2002-12-15 18:28) [33]

То Anatoly Podgoretsky © Уважаемый - посмотри на первое сообщение N6,4 - (Есть Grid, есть Dbase IV, поле number, 6 знаков до и 4 после запятой...) ..... Это уже придирки тововарищи знатоки и ... лень. :(

To mike-d ©
Эффект тот - что округляет :)
Смотрю я на ту таблицу и там 4 после запятой.
Хранит так, как и округляет. опробавано на 6 делфию смотрел Database Desktop///

To sniknik ©
BDE
Type - Standart
Driver - Dbase
Enable BCD - False
Path - локальный



 
Anatoly Podgoretsky   (2002-12-15 18:38) [34]

Ну а структура таблицы, конкретно нерабочии поля


 
Stenkz   (2002-12-15 19:11) [35]

Таблица DBASE IV

Val - C/3
Opis - C/50
Kurs - N/6/4

индексы Val, Opis
лангвидж "ASCII" ANSI




 
Anatoly Podgoretsky   (2002-12-15 19:19) [36]

Stenkz © (10.12.02 16:17)
To Anatoly Podgoretsky ©
Работает так Пишем 156,555 получаем 156,56...
А надо 155,555

Ну вот спустя 5 дней запросов, наконец получен ответ по действительной структуре таблицы. Чего же хочешь, у тебя поле N6.4 - это один знак до, точка и четыре знака после точки, в скмме 6, ну как туда поместится 155,xxxx
Вот тебе ихи и округли и самое плохое, что еперь данные в этом поле не соответствует формату, если тебе надо 6 до и 4 после то будь добр объявить поле так N11.4 (6 + "." + 4)


 
Stenkz   (2002-12-15 19:53) [37]

To Anatoly Podgoretsky ©

Ёпрст...
Вери санькс...

А для Float данная методика построения числа тоже действует?

Если не трудно чем флоат лучше или хуже Numeric. Или точнее где что лучше применять.. Мне надо большую точность вычислений.


 
Anatoly Podgoretsky   (2002-12-15 20:06) [38]

Float нато и Float что точка плавает, не рекомендую вообще использовать этот тип, если только не нужно работать с большими числами. Больше 10^18


 
Stenkz   (2002-12-16 17:12) [39]

Вери вери санькс :)



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

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

Наверх





Память: 0.53 MB
Время: 0.009 c
3-24816
DmitryB
2002-12-17 08:51
2003.01.09
UDF


8-24979
PEC
2002-09-23 14:58
2003.01.09
Привет народ !


1-24972
viper
2002-12-27 09:13
2003.01.09
ListView


3-24768
LV
2002-11-28 18:02
2003.01.09
Delphi-7.Чем делать отчёты к БД ???


8-24976
Алексей Ким
2002-09-21 19:17
2003.01.09
$f





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский