Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > непонятная ошибка


Автор: dikiy 22.1.2007, 12:14
база mdb подключаюсь через ADO
код SQL
Код

update stoim_obj set ost_bal_st=:ost,vost_st=:vost,iznos=:iznos
where id_obj=:id


 код проги
Код

procedure tform1.Button1Click(Sender: TObject);
var
inv:string;
i:integer;
ost,vost,iznos,id:variant;

begin
for i:=1 to adoquery2.RecordCount do
begin
if pos('01/7',adoquery2.FieldValues['счет'])=0 then
begin
inv:=adoquery2.FieldValues['номер'];
inv:=copy(inv,1,1)+copy(inv,3,7);
adotable1.Filter:='inv_nomer='''+inv+'''';
adotable1.Filtered:=true;
if adotable1.recordcount>0 then
begin
id:=adotable1.FieldValues['id_zdan'];
ost:=adoquery2.FieldValues['Остаточная стоимость (бухгалтерская оценка)'];
vost:=adoquery2.FieldValues['Начальная стоимость (бухгалтерская оценка)'];
iznos:=vost-ost;
adoquery1.Parameters.ParamValues['ost']:=ost;
adoquery1.Parameters.ParamValues['vost']:=vost;
adoquery1.Parameters.ParamValues['iznos']:=iznos;
adoquery1.Parameters.ParamValues['id']:=id;
adoquery1.ExecSQL;
ost:=0;
vost:=0;
iznos:=0;
id:=0;
end;
end;
adoquery2.Next;
end;
end;


где-то на третьем объекте выдается ошибка:несоответствие типов данных в выражении условия отбора
кто-нибудь сталкивался с этим?

Автор: dikiy 22.1.2007, 12:48
может попоробовать подключиться через BDE?

Автор: SergeBS 22.1.2007, 14:09
dikiy, 
А строчка какая, на которой встает? И что, ошибку так по-русски и пишет? Подробнее.

Автор: Savek 22.1.2007, 15:00
Вероятно ошибка связана с преобразованием типов данных, поgробуй использовать явное приведение типов
Код

var ost,vost,iznos : Currency
id : integer

....
ost:=adoquery2.FieldByName('Остаточная стоимость (бухгалтерская оценка)').AsCurrency;
vost:=adoquery2.FieldByName('Начальная стоимость (бухгалтерская оценка)'.AsCurrency;
iznos:=vost-ost;
adoquery1.Parameters.ParamByName('ost').Value:=ost;
adoquery1.Parameters.ParamByName('vost').Value:=vost;
adoquery1.Parameters.ParamByName('iznos').Value:=iznos;
adoquery1.Parameters.ParamByName('id').Value:=id;
adoquery1.ExecSQL;


Автор: dikiy 22.1.2007, 15:22
попробовал вот так
Код

adoquery3.Parameters.ParamValues['ost']:=floattostr(ost);
adoquery3.Parameters.ParamValues['vost']:=floattostr(vost);
adoquery3.Parameters.ParamValues['iznos']:=floattostr(iznos);
adoquery3.Parameters.ParamValues['inv']:=inv;

вроде прокатило

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)