回 帖 发 新 帖 刷新版面

主题:为什么老是显示这个错误????

我要把结果保存到数据库,可老师出现这个错误:
Project raised exception class EConverError with message''' is not a valid integer value'.Process stopped.Use Step or  Run to continue.
程序是这样得:
procedure Tdiagnose.Button4Click(Sender: TObject);
var
  s,m: String;
  i:integer;
begin
  inherited;
  s:= 'Fa1'+ FormatDateTime('yyyymmdd',Now());
  With DM.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select max(故障编号) as ss From 故障表 ');
    Open;
  end;
  If DM.ADOQuery1.FieldByName('ss').Value = null then
    s := s + '001'
  else
  begin
    m:= Trim(DM.ADOQuery1.FieldByName('ss').Value) ;
    i:= StrToInt(Trim(Copy(m,11,5))) ;
    if i<9 then
      s:= s + '00'+ InttoStr(i +1)
    else if i<99 then
      s:= s + '0'+ InttoStr(i +1)
    else
      s:= s +InttoStr(i +1);
  end;


  Try
  with DM.ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Insert into 故障表 Values(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23,:24,:25,:26,:27,:28,:29,:30,:31,:32,:33,:34,:35,:36,:37,:38,:39,:40,:41,:42,:43,:44,:45)');
    Parameters.ParamByName('1').Value := s;
    Parameters.ParamByName('2').Value := FormatDateTime('yyyy-mm-dd',Now());
    Parameters.ParamByName('3').Value := 'Sy001';
    Parameters.ParamByName('4').Value := StrToFloat(Trim(Edit1.Text));
    Parameters.ParamByName('5').Value := 'Sy002';
    Parameters.ParamByName('6').Value := StrToFloat(Trim(Edit2.Text));
    Parameters.ParamByName('7').Value := 'Sy003';
    Parameters.ParamByName('8').Value := StrToFloat(Trim(Edit3.Text));
    Parameters.ParamByName('9').Value := 'Sy004';
    Parameters.ParamByName('10').Value := StrToFloat(Trim(Edit4.Text));
    Parameters.ParamByName('11').Value := 'Sy005';
    Parameters.ParamByName('12').Value := StrToFloat(Trim(Edit5.Text));
    Parameters.ParamByName('13').Value := 'Sy006';
    Parameters.ParamByName('14').Value := StrToFloat(Trim(Edit6.Text));
    Parameters.ParamByName('15').Value := 'Sy007';
    Parameters.ParamByName('16').Value := StrToFloat(Trim(Edit7.Text));
    Parameters.ParamByName('17').Value := 'Sy008';
    Parameters.ParamByName('18').Value := StrToFloat(Trim(Edit8.Text));
    Parameters.ParamByName('19').Value := 'Sy009';
    Parameters.ParamByName('20').Value := StrToFloat(Trim(Edit9.Text));

    Parameters.ParamByName('21').Value := 'So001';
    Parameters.ParamByName('22').Value := StrToFloat(Trim(Edit10.Text));
    Parameters.ParamByName('23').Value := 'So002';
    Parameters.ParamByName('24').Value := StrToFloat(Trim(Edit11.Text));
    Parameters.ParamByName('25').Value := 'So003';
    Parameters.ParamByName('26').Value := StrToFloat(Trim(Edit12.Text));
    Parameters.ParamByName('27').Value := 'So004';
    Parameters.ParamByName('28').Value := StrToFloat(Trim(Edit13.Text));

    Parameters.ParamByName('29').Value := 'Re001';
    Parameters.ParamByName('30').Value := output[0];
    Parameters.ParamByName('31').Value := 'Re002';
    Parameters.ParamByName('32').Value := output[1];
    Parameters.ParamByName('33').Value := 'Re003';
    Parameters.ParamByName('34').Value := output[2];
    Parameters.ParamByName('35').Value := 'Re004';
    Parameters.ParamByName('36').Value := output[3];
    Parameters.ParamByName('37').Value := 'Re005';
    Parameters.ParamByName('38').Value := output[4];

   //还需要设置防止重复的参数!!??
   if output[0]>0.5 then
   begin
    Parameters.ParamByName('39').Value := 'Co001';
   Parameters.ParamByName('42').Value := 'Co004' ;
   end
   else
   begin
   Parameters.ParamByName('39').Value := 'NULL';
   Parameters.ParamByName('42').Value := 'NULL';
   end;

   if output[1]>0.5 then
   begin
    Parameters.ParamByName('41').Value := 'Co003';
    Parameters.ParamByName('43').Value := 'Co005';
   end
   else
   begin
   Parameters.ParamByName('41').Value := 'NULL';
   Parameters.ParamByName('43').Value := 'NULL';
   end;

   if output[2]>0.5 then
   begin
   Parameters.ParamByName('40').Value := 'Co002' ;
   Parameters.ParamByName('42').Value := 'Co004';
   end
   else
    begin
    Parameters.ParamByName('40').Value := 'NULL' ;
    Parameters.ParamByName('42').Value := 'NULL';
    end;

    if output[3]>0.5 then
   Parameters.ParamByName('41').Value := 'Co003'
    else
     Parameters.ParamByName('41').Value := 'NULL';

    if output[4]>0.5 then
    Parameters.ParamByName('44').Value :='Co006'
    else
     Parameters.ParamByName('44').Value :='NULL';

    Parameters.ParamByName('45').Value := Trim(memo2.Text);
    ExecSQL;
  end;
    Application.MessageBox(Pchar('保存成功'),'提示',0+64);
    Button4.OnClick(Sender);
  Except
  begin
    Application.MessageBox('系统出错','提示',0+64);
    Close;
  end;
  end;
end;

要保存得数据比较多,有40多个。
我刚学没一个月,里面肯定很多问题,麻烦请高手一一指教!万分感谢!!!鞠躬了!!

回复列表 (共2个回复)

沙发

你的代码中i:integer已设定为整数,细对下实际你的I是将日期转换来的,不是整数型,看看你的数据表吧.

板凳

错误的意识是你有一个数据为非整型数据,你单步调试以下

我来回复

您尚未登录,请登录后再回复。点此登录或注册