
关于Delphi中的''is not valid floating point value
beginMysqlADOQS('crash');b[1]:=DataModule13.ADOQS.Fields[0].AsString;MysqlADOQB('sum'...
begin
MysqlADOQS('crash');
b[1] := DataModule13.ADOQS.Fields[0].AsString;
MysqlADOQB('sum','现金');
if DataModule13.ADOQB.RecordCount=0 then
begin
c[1] := DataModule13.ADOQB.Fields[0].AsString;
eCash1.Caption := FloatToStr((StrToFloat(b[1])-StrToFloat(c[1]))/100);
end
else
eCash1.Caption := FloatToStr(StrToFloat(b[1])/100);
MysqlADOQS('credit');
b[2] := DataModule13.ADOQS.Fields[0].AsString;
MysqlADOQB('sum','银行');
if DataModule13.ADOQB.RecordCount<>0 then
begin
c[2] := DataModule13.ADOQB.Fields[0].AsString;
eCash2.Caption := FloatToStr((StrToFloat(b[2])-StrToFloat(c[2]))/100);
end
else
eCash2.Caption := FloatToStr(StrToFloat(b[2])/100);
MysqlADOQS('mealcard');
b[3] := DataModule13.ADOQS.Fields[0].AsString;
MysqlADOQB('sum','饭卡');
if DataModule13.ADOQB.RecordCount=0 then
begin
c[3] := DataModule13.ADOQB.Fields[0].AsString;
eCash3.Caption := FloatToStr((StrToFloat(b[3])-StrToFloat(c[3]))/100);
end
else
eCash3.Caption := FloatToStr(StrToFloat(b[3])/100);
用到了procedure MysqlADOQS(S: string);
begin
DataModule13.ADOQS.Active:=true;
DataModule13.ADOQS.Edit;
DataModule13.ADOQS.SQL.Clear;
DataModule13.ADOQS.SQL.Text := 'select '+S+' from startmoney where u_name='''+a+'''';
DataModule13.ADOQS.ExecSQL;
DataModule13.ADOQS.open;
end;
procedure MysqlADOQB(B,C: string);
begin
DataModule13.ADOQB.Active:=true;
DataModule13.ADOQB.Edit;
DataModule13.ADOQB.SQL.Clear;
DataModule13.ADOQB.SQL.Text := 'select sum('+B+') from typein where account='''+C+'''';
//DataModule13.ADOQB.ExecSQL;
DataModule13.ADOQB.open;
end;
我想把 DataModule13.ADOQB.RecordCount=0 改成不等于,可是第一个改没问题,将后面几个改掉就是''is not valid floating point value,这个错误,求高手指点 展开
MysqlADOQS('crash');
b[1] := DataModule13.ADOQS.Fields[0].AsString;
MysqlADOQB('sum','现金');
if DataModule13.ADOQB.RecordCount=0 then
begin
c[1] := DataModule13.ADOQB.Fields[0].AsString;
eCash1.Caption := FloatToStr((StrToFloat(b[1])-StrToFloat(c[1]))/100);
end
else
eCash1.Caption := FloatToStr(StrToFloat(b[1])/100);
MysqlADOQS('credit');
b[2] := DataModule13.ADOQS.Fields[0].AsString;
MysqlADOQB('sum','银行');
if DataModule13.ADOQB.RecordCount<>0 then
begin
c[2] := DataModule13.ADOQB.Fields[0].AsString;
eCash2.Caption := FloatToStr((StrToFloat(b[2])-StrToFloat(c[2]))/100);
end
else
eCash2.Caption := FloatToStr(StrToFloat(b[2])/100);
MysqlADOQS('mealcard');
b[3] := DataModule13.ADOQS.Fields[0].AsString;
MysqlADOQB('sum','饭卡');
if DataModule13.ADOQB.RecordCount=0 then
begin
c[3] := DataModule13.ADOQB.Fields[0].AsString;
eCash3.Caption := FloatToStr((StrToFloat(b[3])-StrToFloat(c[3]))/100);
end
else
eCash3.Caption := FloatToStr(StrToFloat(b[3])/100);
用到了procedure MysqlADOQS(S: string);
begin
DataModule13.ADOQS.Active:=true;
DataModule13.ADOQS.Edit;
DataModule13.ADOQS.SQL.Clear;
DataModule13.ADOQS.SQL.Text := 'select '+S+' from startmoney where u_name='''+a+'''';
DataModule13.ADOQS.ExecSQL;
DataModule13.ADOQS.open;
end;
procedure MysqlADOQB(B,C: string);
begin
DataModule13.ADOQB.Active:=true;
DataModule13.ADOQB.Edit;
DataModule13.ADOQB.SQL.Clear;
DataModule13.ADOQB.SQL.Text := 'select sum('+B+') from typein where account='''+C+'''';
//DataModule13.ADOQB.ExecSQL;
DataModule13.ADOQB.open;
end;
我想把 DataModule13.ADOQB.RecordCount=0 改成不等于,可是第一个改没问题,将后面几个改掉就是''is not valid floating point value,这个错误,求高手指点 展开
1个回答
展开全部
你后几个查询的结果中要转换为float的字段值是空的结果 即 字符串 ''
你把字符串 '' 转为 float 它当然报错了
你用 StrToFloatDef 代替 StrToFloat应该就不会报这个错了
你把字符串 '' 转为 float 它当然报错了
你用 StrToFloatDef 代替 StrToFloat应该就不会报这个错了
追问
我用StrToFloatDef时,显示There is no overloaded version of 'StrToFloatDef' that can be called with these arguments是怎么回事?
追答
strtofloatdef 是两个参数 StrToFloatDef(b[2],0)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询