Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
ВнизКак отделить копейки в Grid Найти похожие ветки
← →
psv (2001-12-07 15:27) [0]В базе сумма с копейками например 5566,как сделать
чтобы в grid виделось 55,66
← →
Alexandr (2001-12-07 15:29) [1]в TTable(TQuery) для поля
в событиях OnGetText, OnSetText пиши как тебе надо
← →
serg (2001-12-07 15:36) [2]У полей есть сво-о DisplayFormat
← →
Alexandr (2001-12-07 15:38) [3]ему надо на 100 делить тут displayFormat не поможет...
← →
RusLANB (2001-12-07 16:53) [4]надо использовать OnCalcFiled - создать вычисляемое поле
← →
psv (2001-12-07 21:19) [5]Спасибо за ответы.Мне действительно надо делить
на 100 и форматы никакие не проходят.Но если я
в запросе делю на 100(это Sql Anywhere ) ,то запрос
становиться не радактируемым,если создать вычисляемое
поле его то же нельзя редактировать.
А хотелось чтобы пользователь видел в grid сумму с отделен-
ными копейками и мог ее редактировать
← →
evgeg (2001-12-08 11:13) [6]В отличие от целых чисел,не все десятичные дроби представляются точно в комп. арифметике (кроме типа Currency).
Поэтому лучше не делить на 100, а брать две последние цифры числа. Примерно так:
procedure TForm1.FieldSummOnGetText (Sender: TField; var Text: string; DisplayText: Boolean)
var
s, kop, rub: string;
begin
s := Sender.AsString;
kop := System.Copy (s, length (s) - 1, 2);
rub := System.Copy (s, 1, length (s) - 2);
if length (kop) < 2 then kop := "0" + kop;
if rub = "" then rub := "0";
Text := rub + "." + kop;
end;
procedure TForm1.FieldSummOnSetText (Sender: TField; const Text: string)
var
kop, rub: string;
i: integer;
v: integer;
begin
rub := "";
i := 1;
while (i <= length (Text)) and (Text [i] <> ".") do
begin
rub := rub + Text [i];
inc (i);
end;
kop := "";
inc (i);
if i <= length (Text) then
begin
kop := Text [i];
if i + 1 <= length (Text) then
kop := kop + Text [i+1];
end
if rub = "" then v := 0
else v := StrToInt (rub) * 100;
if kop <> "" then v := v + StrToInt (kop);
Sender.AsInteger := v;
end;
← →
psv (2001-12-08 23:03) [7]Спасибо огромное
попробую объязательно
мне действительно надо брать
две последние цифры.
← →
Alexandr (2001-12-10 13:50) [8]в таком случае
а что, операторы div и mod в паскале уже отменили? Чуть быстрее работать будет, да и как-то понятнее
← →
Laimer (2001-12-10 14:02) [9]а как потом это связать с SQL запросом
← →
Alexandr (2001-12-10 14:09) [10]2laimer:
Слушай, лучше спроси, то что тебе надо.
А то чего-то ты тут спросил не в тему вообще.
Подробно напиши чего непонятно.
← →
Laimer (2001-12-10 14:18) [11]как ввязать, к примеру, написанные выше функции с SQL запросом
← →
Alexandr (2001-12-10 14:23) [12]да никак. Это с запросом никак не связано.
Это уже в программе обработка идет
← →
evgeg (2001-12-10 22:34) [13]> Alexandr
В обработчике OnGetText все равно придется вызывать IntToStr (в твоем варанте - 2 раза).
← →
Pete (2001-12-11 15:37) [14]а еще можно попробовать в EditFormat и в DisplayFormat для этого поля написать что-то вроде "#0-00" (без кавычек)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c