Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отделить копейки в Grid [D6, dBase, FoxPro, ]


psv ©   (2001-12-07 15:27:00) 

В базе сумма с копейками например 5566,как сделать
чтобы в grid виделось 55,66


Pete   (2001-12-11 15:37:00) [1]

а еще можно попробовать в EditFormat и в DisplayFormat для этого поля написать что-то вроде "#0-00" (без кавычек)


evgeg   (2001-12-10 22:34:00) [2]

> Alexandr

В обработчике OnGetText все равно придется вызывать IntToStr (в твоем варанте - 2 раза).


Alexandr   (2001-12-10 14:23:00) [3]

да никак. Это с запросом никак не связано.
Это уже в программе обработка идет


Laimer   (2001-12-10 14:18:00) [4]

как ввязать, к примеру, написанные выше функции с SQL запросом


Alexandr   (2001-12-10 14:09:00) [5]

2laimer:
Слушай, лучше спроси, то что тебе надо.
А то чего-то ты тут спросил не в тему вообще.
Подробно напиши чего непонятно.


Laimer   (2001-12-10 14:02:00) [6]

а как потом это связать с SQL запросом


Alexandr   (2001-12-10 13:50:00) [7]

в таком случае
а что, операторы div и mod в паскале уже отменили? Чуть быстрее работать будет, да и как-то понятнее


psv   (2001-12-08 23:03:00) [8]

Спасибо огромное
попробую объязательно
мне действительно надо брать
две последние цифры.


evgeg   (2001-12-08 11:13:00) [9]

В отличие от целых чисел,не все десятичные дроби представляются точно в комп. арифметике (кроме типа 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-07 21:19:00) [10]

Спасибо за ответы.Мне действительно надо делить
на 100 и форматы никакие не проходят.Но если я
в запросе делю на 100(это Sql Anywhere ) ,то запрос
становиться не радактируемым,если создать вычисляемое
поле его то же нельзя редактировать.
А хотелось чтобы пользователь видел в grid сумму с отделен-
ными копейками и мог ее редактировать


RusLANB   (2001-12-07 16:53:00) [11]

надо использовать OnCalcFiled - создать вычисляемое поле


Alexandr   (2001-12-07 15:38:00) [12]

ему надо на 100 делить тут displayFormat не поможет...


serg   (2001-12-07 15:36:00) [13]

У полей есть сво-о DisplayFormat


Alexandr   (2001-12-07 15:29:00) [14]

в TTable(TQuery) для поля
в событиях OnGetText, OnSetText пиши как тебе надо


Наверх

Титульная страница Поиск, карта сайта Написать письмо