///////////////////////////////////////////////////////////////////////
//
// 作者: 付伟
//
// 日期: 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.