![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() Цитата:
|
#7
|
|||
|
|||
![]() Цитата:
100,56 на самом деле 100,560000000001 или 100,5599999999. Что касается ошибки, очень похоже, что разделитель дробной части у тебя в одном случае ".", а в другом ",". P.S. За упрощённое объяснение не пинать! |
#8
|
||||
|
||||
![]() Цитата:
|
#9
|
|||
|
|||
![]() Цитата:
Цитата:
|
#10
|
||||
|
||||
![]() Elv, я не стану разводить флуд в данной теме. Если интересно мое мнение (а оно подкреплено большим опытом работы с клиентами) по поводу подобных нестыковок милости просим в личку.
|
#11
|
|||
|
|||
![]() Ребята, у меня получилась. Огромное спасибо за помощь...
|
#12
|
|||
|
|||
![]() Цитата:
Человек спросил, как сравнить два Double. Он не просил общих рассуждений, как это должно быть. Если ты имеешь опыт, ты знаешь, что часто, по разным причинам, приходится решать задачу через ж. Лично я не считаю себя вправе давать совет об организации работы UlarSoft'у, так как я ничего не знаю о стоящей перед ним задаче. Из письма UlarSoft'а видно, что он работает с распечаткой документа, то есть не UlarSoft, порождает документ. Что касается твоего опыта, я бы с удовольствием поучился. Думаю, будет отличной идеей создать отдельную ветку, где ты бы смог поделиться опытом. |