迷你5207专属论坛

注册

 

发新话题 回复该主题

[设计] ACCESS日期精确查询函数 [复制链接]

发表者
/////////////////////////////////////////////////////////////////////// // //    作者: 付伟 // //    日期: 2007-06-15 // //    TEL : 13655310832 // /////////////////////////////////////////////////////////////////////// unit Func_Sql; interface uses         SysUtils,ComCtrls,Dialogs; //下面的函数用来处理ACCESS日期类查询的精确查询问题 //如,时间范围在 09:59:59 时,10:00:00的记录不应该被选择. //条件中的'预约时间'字段,是数据库内指定字段,应该在这里指定 // MoreThan 处理 条件 ' >= A '的SQL procedure MoreThan( m_date,m_time : TDateTimePicker ; const s_field : string ;var s_sql : string ); procedure LessThan( m_date,m_time : TDateTimePicker ; const s_field : string ;var s_sql : string ); implementation procedure LessThan( m_date,m_time : TDateTimePicker ; const s_field : string ;var s_sql : string ); var     sqltxt : string;         pdate,ptime : PChar; begin //        m_time.Format('yyyy-MM-dd hh:mm:ss')     GetMem( pdate , m_date.GetTextLen + 1 );     GetMem(ptime,m_time.GetTextLen + 1);         m_date.GetTextBuf( pdate , m_date.GetTextLen + 1 );         m_time.GetTextBuf( ptime , m_time.GetTextLen + 1 );         sqltxt := format('DatePart("yyyy",[%s]) <= DatePart("yyyy",''%s %s'')',[ s_field , pdate, ptime ]);         sqltxt := format('%s and DatePart("m",[%s]) <= DatePart("m",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("d",[%s]) <= DatePart("d",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("h",[%s]) <= DatePart("h",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("n",[%s]) <= DatePart("n",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("s",[%s]) <= DatePart("s",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         s_sql := sqltxt;         FreeMem( pdate );         FreeMem( ptime ); end; procedure MoreThan( m_date,m_time : TDateTimePicker ; const s_field : string ;var s_sql : string ); var         sqltxt : string;         pdate,ptime : PChar; begin //        m_time.Format('yyyy-MM-dd hh:mm:ss')     GetMem( pdate , m_date.GetTextLen + 1 );     GetMem(ptime,m_time.GetTextLen + 1);         m_date.GetTextBuf( pdate , m_date.GetTextLen + 1 );         m_time.GetTextBuf( ptime , m_time.GetTextLen + 1 );         sqltxt := format('DatePart("yyyy",[%s]) >= DatePart("yyyy",''%s %s'')',[ s_field , pdate, ptime ]);         sqltxt := format('%s and DatePart("m",[%s]) >= DatePart("m",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("d",[%s]) >= DatePart("d",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("h",[%s]) >= DatePart("h",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("n",[%s]) >= DatePart("n",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         sqltxt := format('%s and DatePart("s",[%s]) >= DatePart("s",''%s %s'')',[ sqltxt, s_field , pdate,  ptime ]);         s_sql := sqltxt;         FreeMem( pdate );         FreeMem( ptime ); end; end.
本主题由 皇帝 5207 于 2009-7-3 23:07:56 执行 主题分类 操作
分享 转发
我们都在人生的舞台上笨拙地舞蹈着,并自得其乐。
----
Tel : 13655310832
TOP
发新话题 回复该主题