Форум: "Базы";
Текущий архив: 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.008 c