Форум: "Базы";
Поиск по всему сайту: 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.033 c
1-42451           avr555                2001-12-23 18:05  2002.01.14  
Вопрос про линии


7-42589           McSimm                2001-09-28 17:27  2002.01.14  
Автоматическое определение настроек LAN для IE


3-42340           Galina                2001-12-10 19:26  2002.01.14  
Глючит QReport при работе с принтером HP DESCJET 930C


14-42556          AlexKniga             2001-11-19 15:17  2002.01.14  
Сброс пароля на BIOS


3-42371           Romul                 2001-12-11 15:06  2002.01.14  
DB Lib для Delphi