Форум: "Базы";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
ВнизВизуальный просмотр и вставка Найти похожие ветки
← →
Alik$ (2003-08-13 06:32) [0]Как можно в дельфи сделать цифры с запятами т.е. если вводить сумму 123.89 а в базе вставляла бы 12389, а то я Display Format вставил нужный формат а там можно вводить и 12,9843 и в базе вставляет также?
← →
gek (2003-08-13 07:57) [1]Ну а поле-то какого типа?
← →
Zacho (2003-08-13 08:09) [2]Самое универсальное решение - для нужных полей написать обработчики событий OnGetText и OnSetText, в них можно сделать какое угодно форматирование и вообще любые извращения с вводимыми/отображаемыми данными.
← →
Nikolay M. (2003-08-13 09:56) [3]В BeforePost прописать что-то вроде
DataSet.FieldByName ("MyField").AsInteger :=
Trunc (DataSet.FieldByName ("MyField").AsInteger * 100); (если после запятой - всегда 2 знака)
или
DataSet.FieldByName ("MyField").AsString := ReplaceAnsiText ReplaceAnsiPos ((DataSet.FieldByName ("MyField").AsString, ".", ""), ",", "");
А зачем такой изврат?
← →
Zorik (2003-08-13 10:40) [4]самое простое в EditFormat написать ###,##
← →
Alik$ (2003-08-14 06:38) [5]Естественно тип поля Num..
А в ДБГриде там как быть с этими цыфрами если у меня есть на данный момент готовые данные т.е. цифры без запятых как есть к примеру: 19023255 это будет сто девяносто двести тридцать два пятьдесять пять копеек, а визуально в ДБГриде нужно показать в формате 0.00 именно точкой а не запятой.
← →
Alik$ (2003-08-14 06:58) [6]Примечание:
В базе обязательно должна остаться 19023255 нужно только показать визуально 190232.55 в ДБГриде.
← →
Zacho (2003-08-14 08:22) [7]Сделай для этого поля обработчики OnGetText и OnSetText.
Примерно такие:
procedure TForm1.Table1MY_FIELDGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text:=FloatToStr(Sender.AsFloat/100);
DisplayText:=false;
end;
procedure TForm1.Table1MY_FIELDSetText(Sender: TField; const Text: String);
begin
Sender.Value:=StrToFloat(Text)*100;
end;
← →
Sergey13 (2003-08-14 09:41) [8]2Alik$ © (14.08.03 06:58) [6]
Еще как вариант - вычисляемое поле=настоящему/100.
← →
Alik$ (2003-08-25 11:56) [9]Мастера Дельфи мне только надо показать визуально цифры с запятыми а в базе без них вставить Ещё раз пример
в ДБГриде визуально EditFormat и DisplayFormat показывает с запятой но коппейку не делить т.е. сумма 190050 показывает (190050,00), а ведь мне надо (1900.50) подчеркну что именно с точкой, мне приходится вводить с запятыми и то после запятой вставляет более двух цифр,но визуально показывает как надо 1900,50
Ещё...
ДБедитом ввожу цифру (19098.00), а в базе сохранила бы как (1909800) последние две цифры будут коппейки.
← →
Zacho (2003-08-25 11:58) [10]
> Alik$ © (25.08.03 11:56) [9]
Ну а чем не устраивает Zacho © (14.08.03 08:22) [7] ?
← →
Alik$ (2003-08-25 14:10) [11]RE:zacho
Ну Я ещё не поэкспереминтировал шаз попробую..
← →
Alik$ (2003-08-26 08:05) [12]>Сделай для этого поля обработчики OnGetText и OnSetText.
>Примерно такие:
>procedure TForm1.Table1MY_FIELDGetText(Sender: TField; var >Text: String;
> DisplayText: Boolean);
>begin
> Text:=FloatToStr(Sender.AsFloat/100);
> DisplayText:=false;
>end;
>procedure TForm1.Table1MY_FIELDSetText(Sender: TField; const >Text: String);
>begin
>Sender.Value:=StrToFloat(Text)*100;
>end;
=================
Что-то не работает эта задача
а мне нужно только визульно показать стандартные DisplayFormat и другие мне невыгодны однозначна так ведь пользователь не могбы вводить цифры 189,124312 а могли вводить только жестко 189.12, а в базе сохранить цифры 18912 где последние две цифры коппейки.
Может МаскЕдитом как нибудь но у меня с ней сохраняет только с запятыми.
← →
Sergey13 (2003-08-26 09:14) [13]2Alik$ © (26.08.03 08:05) [12]
А чем вычисляемое поле не нравится. Вычисляется на основе реального по какой хочешь формуле. В базе не хранится, работает шустро. Чего еще надо то?
← →
Alik$ (2003-08-29 15:03) [14]Ребята сталкивались с таким форматом.
(document.FieldByName("TONNA")as TFloatField).DisplayFormat:="###" "###" "##0"."00;0;_";
но она у меня не работает как быть я уже запутался ?:
← →
don-do (2003-08-29 15:18) [15]Да, деноминация в свое время и нас на уши поставила.
Но это не выход из положения, с таким подходом только запутаешся сам и запутаеш пользователей, мы у себя провели глобальный апдейт, ну а бухгалтерия тоже что-то оформила.
← →
Alik$ (2003-09-02 17:02) [16]Мой Вам совет изпользуйте эту строку и нет никаких проблем
(document.FieldByName("TONNA")as TFloatField).DisplayFormat:="###" "###" "##0"."00;0;_";
Спасибо за предыдущие советы помогли в эксперименте
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c