主题:为什么老是显示这个错误????
我要把结果保存到数据库,可老师出现这个错误:
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多个。
我刚学没一个月,里面肯定很多问题,麻烦请高手一一指教!万分感谢!!!鞠躬了!!
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多个。
我刚学没一个月,里面肯定很多问题,麻烦请高手一一指教!万分感谢!!!鞠躬了!!