![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перемножить и вставить в БД [D6, Paradox]
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 константа ???
Видимо курсовая;)