关于Delphi中RS Float字段只有4位及OADateTime不能显示到秒的解决办法

去年就Google过答案了
今天居然忘了还好当时告诉同事了他还记得。。
大致如下:
Delphi 中对ADO RS (或者ADO本身?)浮点字段有2种存储方式:
TFloatField(能存储全部精度)、TBCDField(转化后只能显示小数点后4位)

通过RS的EnableBCD来控制,该属性默认为True因而默认情况下,浮点字段的ASFloat 返回结果只保留了4位小数。
解决办法:在生成字段前设置该属性即可

例如我们程序中时间是使用OA时间存储的:

rs1: = TADODataSet.Create(Application);
rs1.Connection:
= Datam.cn;
rs1.EnableBCD:
= false;

// SQL查询
Common.ExecSQLQuery(rs1,sSql);

这样 rs1.fieldbyname('fBeginDate').AsFloat 就能得到6位小数(到秒)
但DateTimeToStr( rs1.fieldbyname('fBeginDate').AsFloat  ) 依旧不能正常显示到秒(至于为什么就不清楚了,版本是Delphi6 sp2)
解决办法是:
FormatDateTime('yyyy-mm-dd hh:nn:ss' ,rs1.fieldbyname('fBeginDate').AsFloat)

转载于:https://www.cnblogs.com/calmzeal/archive/2008/03/17/1109165.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值