strSQL:='select * from TEMPRECORD where SelStCodeNo='''+str1+'''';
try
ExecQuery(DM.DSetTemp,strSQL);
DM.DSetTemp.First;
tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger;
注释:ExecQuery()是我单独写的一个执行sql语句的函数,是没有错的,DM.DSetTemp是ADODataSet类型的控件
执行出错:‘’is not a valid integer value.
这是为什么?问题出现在tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger;
try
ExecQuery(DM.DSetTemp,strSQL);
DM.DSetTemp.First;
tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger;
注释:ExecQuery()是我单独写的一个执行sql语句的函数,是没有错的,DM.DSetTemp是ADODataSet类型的控件
执行出错:‘’is not a valid integer value.
这是为什么?问题出现在tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger;
showMessage(DM.DSetTemp.FieldByName('Timemute').AsString); // 看裏面是什麼,應該是空的。
tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger //所有你這樣會出錯,因為他不是整型。
改成:
tp:=StrToIntDef(DM.DSetTemp.FieldByName('Timemute').AsString, 0);
tp:=StrToInt(DM.DSetTemp.FieldByName('Timemute').AsString);
Except
ShowMessage('转换出错!');
Exit;
end;
try
ExecQuery(DM.DSetTemp,strSQL);
if DM.DSetTemp.IsEmpty then exit; // 加上此句 DM.DSetTemp.First;
tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger;
问题是tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger;中
当数据库中Timemute对应的值是0时就出错
这个问题怎么解决?
tp:=DM.DSetTemp.FieldByName('Timemute').AsInteger;
改成:
tp:=StrToIntDef(DM.DSetTemp.FieldByName('Timemute').AsString, 0);
tp得到的结果好像全是0,本来数据库里Timemute的值是0、1、2递增的
'Timemute'字段中的值是不是带空格呀,char类型是有这个问题的
tp:=StrToInt(trim(DM.DSetTemp.FieldByName('Timemute').AsString));