Delphi查询Access日期/时间字段报错的自我总结
来源:互联网 发布:windows系统正版验证 编辑:程序博客网 时间:2024/06/05 17:01
现象描述
最近学习Delphi,在学习连接Access数据库的时候发现有个问题:通过使用的是
ADOConnection+DataSource+ADOQuery 方式连接数据库
连接。执行查询语句中如果没有时间类型就没有问题,如果包含时间在里面就有问题.代码如下:SqlStatement := Format('SELECT distinct Time FROM [Memo] WHERE datediff(''d'',Time,#%s#)=0 And Time >#10/29/2013 9:30#',[SysData]);//Delphi查询Access日期字段是这样的。 SqlAdd := Format(' And Time >#%s#',[SysTime]); try MADOQuery.Close; MADOQuery.SQL.Clear; MADOQuery.SQL.Add(SqlStatement); MADOQuery.SQL.Add(SqlAdd); MADOQuery.Open; if MADOQuery.RecordCount >0 then begin.....{执行一些操作}end;
也就是:执行
Select Distinct Time From [Memo] Where Time > #2013/10/29 9:30:0#这条语句是有问题的,但是执行Select Distinct Time From [Memo] Where Time > #2013/10/29#就没有问题,抱着学习的态度然后就是来排除故障,首先我怀疑是SQL语句有问题,于是将这条语句放入Access中执行了一边,没有问题可以实现,后来有怀疑自己在Access中的字段设置出了问题,于是乎就跑过去弄Access中Time这个字段,将它设置为常规时间,长时间等等,试了好久最终发现没有Access什么事,它是无辜的,然后就是找资料,后来看到书上说":"是Delphi系统中的关键符号,我就猜测是不是因为“:”,于是上网上搜这方面的资料,刚好发现原来还真有这个东西:Delphi中“:”表示参数的意思,就是说系统把9:30当成30是9的参数于是去检查9中的参数30去了,我们编过程的都知道,这肯定查不到了,于是就你知道的,系统报错,“”
下面找到了原因来说解决方案:
系统自检功能才导致出差,因此我只需要禁止掉自检,执行SQL语句的是TADOQuery,我们只需要将MADOQuery.ParamCheck:=False就行了,
SqlStatement := Format('SELECT distinct Time FROM [Memo] WHERE datediff(''d'',Time,#%s#)=0 And Time >#10/29/2013 9:30#',[SysData]); SqlAdd := Format(' And Time >#%s#',[SysTime]); try MADOQuery.Close; MADOQuery.SQL.Clear;如果你怕自己对Delphi不熟悉,禁掉这个属性会有问题,你就可以在你执行完你的SQL语句之后这是设置回来该属性。MADOQuery.ParamCheck := False;//修改这里MADOQuery.SQL.Add(SqlStatement); MADOQuery.SQL.Add(SqlAdd); MADOQuery.Open; if MADOQuery.RecordCount >0 then begin
- Delphi查询Access日期/时间字段报错的自我总结
- delphi Access 日期字段的查询问题总结
- Delphi 中Access的 时间日期查询问题
- delphi Access中只取时间的日期部分的函数
- 关于ADO+SQL /Access里面查询日期时间类型语句的一点总结
- delphi 日期格式报错的问题
- delphi 关于ACCESS的日期类型字段比较的一点认识
- 【ASP】在ACCESS日期/时间字段插入空值或者将原来的时间值清空
- 日期/时间字段的条件
- access 查询字段不为空的
- 如何用SQL语句,查询数据库(日期+时间字段)中等于某一天的记录
- ACCESS支持的时间日期函数
- ACCESS支持的时间日期函数
- access 查询空字段
- DateTime字段, 日期和时间同时进行区间查询
- 一次Delphi访问access数据库的总结
- DELPHI 日期与时间的计算
- delphi的日期和时间显示
- 如何利用eclipse查看cloudstack某个分支代码
- 汇顶 笔试 一面 二面 软件开发工程师-嵌入式软件开发
- jQueryMobile头部代码
- JAVA常用数据结构及原理分析
- sqrt(x)
- Delphi查询Access日期/时间字段报错的自我总结
- USB数据线结构
- 大数据高并发系统架构实战方案
- matlab+VC 实现Bag of features
- C++ 虚函数表解析
- 创建多引线对象(MLeader)
- memcache安装以及Java代码实现(包括多个memcache安装)
- Android下查询系统源码看短信的显示
- hibernate的flush