Форум: "Базы";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
ВнизПеремножить и вставить в БД Найти похожие ветки
← →
Artemij (2003-12-04 14:13) [0]В БД есть 2 поля - сумма и НДС от этой суммы (формат обоих - Currency). Как рассчитать НДС и записать его значение в БД? Я пробовал следующим путем (вызываю действие после выхода из DBEdit (OnExit), в который вводится сума):
Table1Field_NDS.Value := StrToFloat(DBEdit_Summa.Text) * 0.20;
После того, как ввожу сумму и выхожу из DBEdit, вылетает ошибка:
вводимая сумма is not a valid floating point value.
Что делать?
← →
Семен Сорокин (2003-12-04 14:20) [1]Делай это на OnBeforePost
← →
Рамиль (2003-12-04 14:22) [2]Вместо StrToFloat(DBEdit_Summa.Text) лучше Table1FieldSumma.Value в событии AfterPost.
А ошибка из за не совпадения DecimalSeparator
← →
Johnmen (2003-12-04 14:22) [3]1. В поле едита неверный формат числа с пл.точкой
2. А почему 0.20 константа ???
← →
Рамиль (2003-12-04 14:24) [4]
> 2. А почему 0.20 константа ???
Видимо курсовая;)
← →
Alex_Bredin (2003-12-04 14:27) [5]в таблице нет смысла хранить данные, которые можно получить вычислением
← →
Artemij (2003-12-04 14:29) [6]
> 2. А почему 0.20 константа ???
Это я для примера. Потом будет как надо.
← →
Danilka (2003-12-04 14:29) [7][5] Alex_Bredin © (04.12.03 14:27)
эт ты так про НДС?
ну-ну, желаю удачи. :))
← →
Рамиль (2003-12-04 14:29) [8]...
> Alex_Bredin © (04.12.03 14:27) [5]
согласен.
Правильнее будет хранить как раз ставку НДС, которая отнюдь не константа
← →
stone (2003-12-04 14:31) [9]
> StrToFloat(DBEdit_Summa.Text)
Это такой новый способ представления числовых типов данных?
← →
Alex_Bredin (2003-12-04 14:31) [10]
> 2. А почему 0.20 константа ???
с НГ ваша программа накроется медным тазом
← →
Artemij (2003-12-04 14:31) [11]
> Alex_Bredin © (04.12.03 14:27) [5]
Мне потом надо делать поиск по величине НДС.
← →
Artemij (2003-12-04 14:36) [12]
> Это такой новый способ представления числовых типов данных?
А как?
← →
Alex_Bredin (2003-12-04 14:38) [13]
>
> > Alex_Bredin © (04.12.03 14:27) [5]
>
> Мне потом надо делать поиск по величине НДС.
ничто не мешает делать поиск по сумме*ставку НДС
хотя с НДС все не так просто,тут контролируемая избточность может быть полезна(но не для поиска)
← →
Artemij (2003-12-04 14:38) [14]Помогите на конкретном примере, пожалуйста.
← →
Artemij (2003-12-04 14:42) [15]События OnBeforePost и OnAfterPost не годятся, т.к. НДС сумму надо видеть сразу на форме для ввода новой записи.
← →
Nikolai_S (2003-12-04 14:47) [16]
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 15:55) [17]Я понял в чем ошибка - поскольку в таблице формат поля "Сумма" Currency, то в результате
DBEdit_Summa.Text
помимо числа появляется и денежная единица. Как мне быть? Убирать руб. из текста DBEdit (как это делается) или по-другому?
← →
Sandman25 (2003-12-04 15:58) [18][16] Nikolai_S © (04.12.03 14:47)
Есть стандартная функция StringReplace.
← →
Silver Alex (2003-12-04 16:17) [19]
> Убирать руб
можно посмотреть DisplayFormat.
I>
> в таблице нет смысла хранить данные, которые можно получить
> вычислением
> Правильнее будет хранить как раз ставку НДС, которая отнюдь
> не константа
может и правильней,но как показывает практика лучше все таки хранить само значение с НДС<
← →
Johnmen (2003-12-04 16:21) [20]>Artemij © (04.12.03 15:55)
>или по-другому?
Смотри на него, как на Float.
← →
Sandman25 (2003-12-04 16:21) [21]Мы вообще храним и ставку, и сумму НДС. Ставка нужна для отчетов по ставке (при расчетах получается ставка = 19..21 вместо 20. Сумма НДС нужна для борьбы с погрешностью округлений. Да и просто быстрее отчеты получаются.
← →
Artemij (2003-12-04 16:48) [22]Решил проблему через
delete(s,..,..)
. Примитивно, но зато работает.
← →
Silver_ (2003-12-04 19:00) [23]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]
>
> согласен.
> Правильнее будет хранить как раз ставку НДС, которая отнюдь
> не константа
и исполизуй Вычисляимое поле
> Мне потом надо делать поиск по величине НДС.
при использовании Вычисляемого поля этот вопрос отпадет сам собой
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c