首页 > 解决方案 > '“ 不是有效的浮点数

问题描述

  Price:=StrToFloat(Sqls.TSQLs.Create.Get('SELECT Cost FROM TblRoom WHERE 
  RoomType="' + Room + '" AND HotelName = ' + QuotedStr(Hotel),'Cost'));

Sqls.TSQLs.Create.Get是我创建的用于从数据库中提取值的函数。注意它在一个单元中

function TSQLs.Get(SQL: string; value: string): string;
begin
with Databasehub.DataModule1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(SQL);
ADOQuery1.Open;
if (ADOQuery1.RecordCount = 1) then
begin
Result := ADOQuery1.FieldByName(value).AsString;
end;
end;
end;

标签: delphi

解决方案


开发人员应检查该值是否可用于计算价格:

tmpStr := Sqls.TSQLs.Create.Get('SELECT Cost FROM TblRoom WHERE RoomType="' + Room + '" AND HotelName = ' + QuotedStr(Hotel),'Cost');
if not TryStrToFloat(tmpStr, Price) then
  Begin
    ShowMessage('be sure that the value exists, window will be closed!');
    Exit;
  End;

还使用 sql 参数而不是将变量插入字符串。


推荐阅读