Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 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" (без кавычек)




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




Наверх





Память: 0.73 MB
Время: 0.023 c
14-42544          Tosov                 2001-11-16 17:18  2002.01.14  
HDD: Что выбрать


3-42360           grab                  2001-12-11 14:13  2002.01.14  
заполнение БД данными из текстового файла


3-42369           Softmaster            2001-12-11 20:14  2002.01.14  
Проблема с группировкой в отчете при использовании QReport


14-42551          Jey                   2001-10-30 22:03  2002.01.14  
ЗА СТЕКЛОМ


3-42384           NLO                   2001-12-07 12:23  2002.01.14  
кряк для Grant Manager 3 ну очень надо !!