![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Уважаемые специалисты.
Я работаю с компонентом DBGridEh, а база данных в SQL. На форме расположен DBGridEh, через ADO подключаюсь к БД. Я пишу счет-фактуру на Дельфи. Пользователи вводять вручную кол-во, цена, сумма, сумма НДС, всего (товара). При вводе я должен проверит правильно ли они набрали, н-р сумму НДС. Делаю следующий код: if (qTovar.FieldByName('NDS').AsFloat<>0) //Если не ноль and (Key=#13) then begin qSprNds.Open; //открытие справочника НДС if Round((qTovar.FieldByName('SUMMA').AsFloat * qSprNds.FieldByName('STAVKA').AsFloat/100)*100)/100<> qTovar.FieldByName('NDS').AsFloat then //СРАВНЕНИЕ begin ExB:=MessageBox(handle,pchar('Не правильна подсчитана сумма НДС !!!'+#13+#10+''+ 'Правильная сумма НДС = '+FloattoStr(Round((qTovar.FieldByName('SUMMA').As Float * qSprNds.FieldByName('STAVKA').AsFloat/100)*100)/100)+ #13+#10+''),pchar('Ошибка ...'),48); qTovar.FieldByName('NDS').AsFloat :=0;//Присваиваю ноль end; if Exb=IDOK then end; Если кол=1, цена=100.56, сумма=100.56, то должен быть НДС(4%)=4.0224 Когда я набираю на компе т.е. в ячейке 4,0224 копм ругается. Помогите плиииз, очень надо. Уже четвертый день у меня ничего не получается. |
#2
|
||||
|
||||
![]() Напиши текст ошибки или код ошибки. Нужно больше инф.
Или попробуй Код:
try..except или try..finally |
#3
|
|||
|
|||
![]() Мне нужно проверить "Сумму НДС" (20%), "Сумму НП" (4%) и Итоговую сумму... А их набирают пользователи вручную... Я должен автоматически проверить введенные данные т.е. проверить пользователя...
Правильно ли он набрал "Сумму НДС" (20%), "Сумму НП" (4%) и Итоговую сумму... или не правильно. Если пользователь не правильно посчитал, тогда будет сообщение с правильными суммами... Вот когда я сравниваю с округлением: if Round((qTovar.FieldByName('SUMMA').AsFloat * qSprNds.FieldByName('STAVKA').AsFloat/100)*100)/100<> qTovar.FieldByName('NDS').AsFloat then т.е. "сумма" * "ставка НДС" <> "сумма НДС", где "сумма" * "ставка НДС" - считает комп, "сумма НДС" - вводить пользователь в ячейку "Сумма НДС" в гриде... Ошибка: При сравнении не совподает вариант пользователя с машинным вариантом, т.е. если количество=1, цена=100,56 тогда сумма=100,56. А Сумма НДС: Вариант пользователя - 20,11. Вариант компа=20,11 Сумма не совподает. |
#4
|
||||
|
||||
![]() Вообще-то, пользователь сумму НДС и не должен руками вводить, она должна рассчитываться относительно установленной процентной ставки и никак иначе. Следовательно ничего проверять и не нужно. UlarSoft учите бухучет.
|
#5
|
|||
|
|||
![]() Aristarh Dark, Вы обсолютно правы, но требуют, чтобы была проверка... А счет-фактура введется полностью вручную...
|
#6
|
|||
|
|||
![]() Цитата:
100,56 на самом деле 100,560000000001 или 100,5599999999. Что касается ошибки, очень похоже, что разделитель дробной части у тебя в одном случае ".", а в другом ",". P.S. За упрощённое объяснение не пинать! |
#7
|
|||
|
|||
![]() Цитата:
|
#8
|
||||
|
||||
![]() Цитата:
|