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

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

Перемножить и вставить в БД [D6, Paradox]


Страницы:   1 2

Artemij ©   (2003-12-04 14:13:00) 

В БД есть 2 поля - сумма и НДС от этой суммы (формат обоих - Currency). Как рассчитать НДС и записать его значение в БД? Я пробовал следующим путем (вызываю действие после выхода из DBEdit (OnExit), в который вводится сума):
Table1Field_NDS.Value := StrToFloat(DBEdit_Summa.Text) * 0.20;
После того, как ввожу сумму и выхожу из DBEdit, вылетает ошибка:
вводимая суммаis not a valid floating point value.
Что делать?


Silver_   (2003-12-04 19:00:00) [1]

CurrencyToComp(Value: Currency; var Result: Comp);
Comp –2^63+1 .. 2^63 –1

> Мы вообще храним и ставку, и сумму НДС.

Прислушайся к

> Рамиль © (04.12.03 14:29) [8]
> ...
> > Alex_Bredin © (04.12.03 14:27) [5]
>
> согласен.
> Правильнее будет хранить как раз ставку НДС, которая отнюдь
> не константа


и исполизуй Вычисляимое поле

> Мне потом надо делать поиск по величине НДС.

при использовании Вычисляемого поля этот вопрос отпадетсам собой


Artemij   (2003-12-04 16:48:00) [2]

Решил проблему через delete(s,..,..). Примитивно, но зато работает.


Sandman25   (2003-12-04 16:21:00) [3]

Мы вообще храним и ставку, и сумму НДС. Ставка нужна для отчетов по ставке (при расчетах получается ставка = 19..21 вместо 20. Сумма НДС нужна для борьбы с погрешностью округлений. Да и просто быстрее отчеты получаются.


Johnmen   (2003-12-04 16:21:00) [4]

>Artemij © (04.12.03 15:55)
>или по-другому?

Смотри на него, как на Float.


Silver Alex   (2003-12-04 16:17:00) [5]


> Убирать руб

можно посмотреть DisplayFormat.
I>
> в таблице нет смысла хранить данные, которые можно получить
> вычислением


> Правильнее будет хранить как раз ставку НДС, которая отнюдь
> не константа

может и правильней,но как показывает практика лучше все таки хранить само значение с НДС<


Sandman25   (2003-12-04 15:58:00) [6]

[16] Nikolai_S © (04.12.03 14:47)

Есть стандартная функция StringReplace.


Artemij   (2003-12-04 15:55:00) [7]

Я понял в чем ошибка - поскольку в таблице формат поля "Сумма" Currency, то в результате DBEdit_Summa.Textпомимо числа появляется и денежная единица. Как мне быть? Убирать руб.из текста DBEdit (как это делается) или по-другому?


Nikolai_S   (2003-12-04 14:47:00) [8]

procedure ReplaceChar(var s: string; OldChar, NewChar: char);
var
i, L: integer;
begin
L := Length(s);
for i := 1 to L do
if s[i] = OldChar then s[i] := NewChar;
end;


.....
var
s: string;
...
s := DBEdit_Summa.Text;
// Далее заменяем в строке s все точки и запятые на константу DecimalSeparator:

ReplaceChar(s, ",", DecimalSeparator);
ReplaceChar(s, ".", DecimalSeparator);

//а далее как и было:

Table1Field_NDS.Value := StrToFloat(s) * 0.20;


Еще бы не мешало проверять DBEdit_Summa.Text на предмет того, что ввели именно положительное вещественное или целое число, а не текст.


Artemij   (2003-12-04 14:42:00) [9]

События OnBeforePost и OnAfterPost не годятся, т.к. НДС сумму надо видеть сразу на форме для ввода новой записи.


Artemij   (2003-12-04 14:38:00) [10]

Помогите на конкретном примере, пожалуйста.


Alex_Bredin   (2003-12-04 14:38:00) [11]


>
> > Alex_Bredin © (04.12.03 14:27) [5]
>
> Мне потом надо делать поиск по величине НДС.

ничто не мешает делать поиск по сумме*ставку НДС

хотя с НДС все не так просто,тут контролируемая избточность может быть полезна(но не для поиска)


Artemij   (2003-12-04 14:36:00) [12]


> Это такой новый способ представления числовых типов данных?

А как?


Artemij   (2003-12-04 14:31:00) [13]


> Alex_Bredin © (04.12.03 14:27) [5]

Мне потом надо делать поиск по величине НДС.


Alex_Bredin   (2003-12-04 14:31:00) [14]


> 2. А почему 0.20 константа ???

с НГ ваша программа накроется медным тазом


stone   (2003-12-04 14:31:00) [15]


> StrToFloat(DBEdit_Summa.Text)


Это такой новый способ представления числовых типов данных?


Рамиль   (2003-12-04 14:29:00) [16]

...
> Alex_Bredin © (04.12.03 14:27) [5]

согласен.
Правильнее будет хранить как раз ставку НДС, которая отнюдь не константа


Danilka   (2003-12-04 14:29:00) [17]

[5] Alex_Bredin © (04.12.03 14:27)
эт ты так про НДС?
ну-ну, желаю удачи. :))


Artemij   (2003-12-04 14:29:00) [18]


> 2. А почему 0.20 константа ???

Это я для примера. Потом будет как надо.


Alex_Bredin   (2003-12-04 14:27:00) [19]

в таблице нет смысла хранить данные, которые можно получить вычислением


Рамиль   (2003-12-04 14:24:00) [20]


> 2. А почему 0.20 константа ???

Видимо курсовая;)


Страницы:   1 2

Наверх

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