做了个简单的人事表,通过窗体查询,查询内容是通过填写几个edit的内容查询,查询的内容有姓名,性别,部门,学历,职称,职务,年龄(多少岁之多少岁,通过俩个edit添写),然后通过一个查询按钮在gbgrid1中显示查询的内容。有时只查姓名,或有时查部门和学历,有是全部查,代码如下:
var
SQL: string;
begin
SQL := 'SELECT * FROM Employee WHERE 1 = 1';
if Trim(edtEmployeeName.Text) <> '' then
SQL := SQL + ' AND EmpoyeeName = ' + QuotedStr(Edit1.Text);
if ............我试了,没问题,但查询年龄时,按上面的格式怎么写呀,就是查询X岁到Y岁的人,建表时我建的是出生年月。
有个朋友给了我的代码:
if Trim(Edit1.Text) <> '' then //
SQL := SQL + ' AND DATEDIFF(YEAR, Birthday, GETDATE()) >= ' + Edit1.Text + ' ';
if Trim(Edit2.Text) <> '' then
SQL := SQL + ' AND DATEDIFF(YEAR, Birthday, GETDATE()) <= ' + Edit2.Text+ ' ';
我运行了一下,没问题,可一查讯岁数时,就出现错误‘project renshi.exe raised exception class EDBEngineError with message'Invalid use of keyword. token:YEAR, line number:1'.process stopped.use step or pun to continue’
var
SQL: string;
begin
SQL := 'SELECT * FROM Employee WHERE 1 = 1';
if Trim(edtEmployeeName.Text) <> '' then
SQL := SQL + ' AND EmpoyeeName = ' + QuotedStr(Edit1.Text);
if ............我试了,没问题,但查询年龄时,按上面的格式怎么写呀,就是查询X岁到Y岁的人,建表时我建的是出生年月。
有个朋友给了我的代码:
if Trim(Edit1.Text) <> '' then //
SQL := SQL + ' AND DATEDIFF(YEAR, Birthday, GETDATE()) >= ' + Edit1.Text + ' ';
if Trim(Edit2.Text) <> '' then
SQL := SQL + ' AND DATEDIFF(YEAR, Birthday, GETDATE()) <= ' + Edit2.Text+ ' ';
我运行了一下,没问题,可一查讯岁数时,就出现错误‘project renshi.exe raised exception class EDBEngineError with message'Invalid use of keyword. token:YEAR, line number:1'.process stopped.use step or pun to continue’
begin
sql.clear;
sql.add(select * from 表名 where 字段名=:参数);
Parameters.ParamByName('参数').Value := 参数值;
open;
end;
如果还写不出来,就看看书补下基础吧。
function YearOf(const AValue: TDateTime): Word;
可以获得日期的年 你再获得现在的时间获得现在的年
然后........