delphi - '“ 不是有效的浮点数
问题描述
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;
解决方案
开发人员应检查该值是否可用于计算价格:
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 参数而不是将变量插入字符串。
推荐阅读
- excel - 回车和换行未替换为 VBA 字符串
- java - Runnable run() 方法同步执行,Callable call() 方法异步执行。
- java - 切换到 targetSdkVersion 28 (Android) 时出现 DefaultHttpClient NoClassDefFoundError
- gulp - $ gulp -> gulp: 找不到命令,但是 $ npx gulp -> 有效吗?
- javascript - 从csv文件读取数据后,使用javascript将指数数转换为普通数
- keras - 通过在 keras 中使用预训练模型的权重进行微调来进行迁移学习
- azure - 如何从 Azure 区块链服务获取私钥?
- c++ - 构建二叉搜索树时出现分段错误
- clion - Mac OS CMake 中的链接诅咒
- c# - 两个按钮之间的歧义