Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2014, 19:08   #1
Bane
LetTheGameBegin
Пользователь
 
Аватар для Bane
 
Регистрация: 13.03.2014
Сообщений: 34
По умолчанию Проблема с вычислениями в коде.

Если Brutto или Netto ввести меньше 100, выдаёт ошибку. Помогите разобраться, что не так?

VES и CENA_BRUTTO_BL глобальные переменные...

Код:
VES, CENA_BRUTTO_BL: real;
Код:
procedure TForm8.Button1Click(Sender: TObject);
var BRUTTO, NETTO, cena, cena_ing, CENA_BR: real;
    kod: string;
begin
BRUTTO:=StrToFloat(Edit1.Text);//Вес брутто для ингредиента
NETTO:=StrToFloat(Edit2.Text); //Вес нетто для ингредиента
cena_ing:=Form7.DBGrid1.DataSource.DataSet.FieldByName('Cena').AsFloat;//Цена за 100 грамм ингредиента

CENA_BR:=(BRUTTO/100)*cena_ing; //Цена брутто ингредиента

VES:=VES+NETTO; //Вес нетто для всех ингредиентов

CENA_BRUTTO_BL:=CENA_BRUTTO_BL+CENA_BR; //Цена за все брутто блюда

kod:=Form7.DBGrid1.DataSource.DataSet.FieldByName('Kod').AsString;
With Form7.ADOQuery2 do
  begin
  SQL.Clear;
  SQL.Add('UPDATE Sostav SET [Brutto]='+FloatToStr(BRUTTO)+' WHERE Kod='+kod+';');
  ExecSQL;

  SQL.Clear;
  SQL.Add('UPDATE Sostav SET [Netto]='+FloatToStr(NETTO)+' WHERE Kod='+kod+';');
  ExecSQL;

  SQL.Clear;
  SQL.Add('UPDATE Sostav SET [Cena]='+FloatToStr(CENA_BR)+' WHERE Kod='+kod+';');
  ExecSQL;

  SQL.Clear;
  SQL.Add('SELECT * FROM Sostav;');
  ExecSQL;
  Active:=true;
  end;

Form8.Close;
end;
Я только учусь)
Bane вне форума Ответить с цитированием
Старый 05.06.2014, 19:53   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Используй параметры в запросах - это в дальнейшем облегчает жизнь избавляя от непонятных глюков...
И достаточно одного запроса:

Код:
Form7.ADOQuery2.SQL.Text:='UPDATE Sostav SET Brutto= :Brutto, Netto= :Netto, Cena = :Cena WHERE Kod= :Kod;';
Form7.ADOQuery2.Parameters.ParamByName('Brutto').Value:= BRUTTO;
Form7.ADOQuery2.Parameters.ParamByName('Netto').Value:= NETTO;
Form7.ADOQuery2.Parameters.ParamByName('Cena').Value:= CENA_BR;
Form7.ADOQuery2.Parameters.ParamByName('Kod').Value:= Kod;
Form7.ADOQuery2.ExecSQL;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 05.06.2014, 19:56   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Поле Kod какого типа?
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с вычислениями ~Sл@\/яH~ JavaScript, Ajax 3 12.08.2012 16:14
Программа на C# с вычислениями математических функций (пример из учебника) не компилируется. 1911A1 Помощь студентам 3 15.07.2011 18:42
Проблема в коде, C# Gogent Помощь студентам 5 13.08.2010 23:19
Проблемы с вычислениями grafgrial Общие вопросы Delphi 2 16.04.2010 20:29
Сложности с вычислениями Adlar Microsoft Office Access 0 23.06.2009 22:20