Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.012 c
1-82305
Pomashok
2003-09-13 21:34
2003.09.25
Как прально описвать функцию?


4-82543
_smile
2003-07-23 11:26
2003.09.25
Как отловить разворачивание своего окна на весь экран?


14-82501
Rouse_
2003-08-31 04:46
2003.09.25
Перепись (Уже нормальная)


3-82099
Xmen
2003-09-04 15:48
2003.09.25
MySQL


3-82147
АлеКс
2003-09-03 04:13
2003.09.25
Не срабатывают события TADOQuery





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