做了个简单的人事表,通过窗体查询,查询内容是通过填写几个edit的内容查询,查询的内容有姓名,性别,部门,学历,职称,职务,年龄(多少岁之多少岁,通过俩个edit添写),然后通过一个查询按钮在gbgrid1中显示查询的内容。有时只查姓名,或有时查部门和学历,有是全部查,查完时用一个label显示查到记录的个数,代码什么写呀。要是我给的分不够,我再加。
解决方案 »
- XML问题:TXMLDocument.Active自动变成False,操作还没结束,对象已自动销毁
- 关于WINDOWS API WaitForMultipleObjects 问题(100分求解)
- fr中用的virtual dataset,其Record Count能动态指定吗?
- 多窗口同时操作的问题?
- 如何清空和备份数据库
- 在DELPHI7的CORBA中调用COM对象为什么会失败?
- fctreenode 加stringdata的问题
- 关于应用程序服务器的问题向大家请教!
- 关于数据库汇总查询,日期条件的问题
- 请教字符压缩问题,在线等!
- 请高手进入-(关于输入法切换时,程序会停止响应)
- 怎样将pardox的数据库容量扩大,即跨出128M的限制,急!
s:string;
st1:tstringlist;
st2:tstringlist;
i:integer;
begin
St1:=TStringlist.create;
St2:=TStringlist.create;
st1.Add('姓名 Like '+''''+'%'+cxtj1.Text+'%'+'''');
st1.Add('性别 Like '+''''+'%'+cxtj2.Text+'%'+'''');
......你能想到的若干条件,但条件不能是空,自己判断一下。
if st1.Count=1 then//如果只有一个条件
st2.add(st1.text) else
begin
for i:=0 to st1.count-1 do//多个条件
begin
st2.Add(st1[i]);
if i+1<>st1.count then st2.Add(' and ');//与的条件
end;
end;Query1.sql.add('select * from 查询表 where ');
Query1.sql.AddStrings(st2);
Query1.Open;<-查询
label1.caption:=inttostr(query1.recordcount);st1.free;
st2.free;
end;
with adoquery1 DO
begin
Close;
sql.Clear;
sql.add(' SELECT * FROM table1 where 1=1');//没有查询条件的时候显示所有的数据
if edit1.Text<>''then
sql.add(' and where ....');
if .......
最后open
End;
'姓名 Like '+''''+'%'+cxtj1.Text+'%'+''''用到查询语句中能返回结果嘛,我每次只能加一边‘%’语句才能返回结果
这是sql的基本语法,自己去查吧。
比方说你一个表Employee, 有一个字为EmployeeName;你要查SELECT * FROM Employee
那就用简单一点吧
var
SQL: string;
begin
SQL := 'SELECT * FROM Employee WHERE 1 = 1';
if Trim(edtEmployeeName.Text) <> '' then
SQL := SQL + ' AND EmpoyeeName = ' + QuotedStr(Edit1.Text);
if ............有点看不懂。能帮我说明一下吗?
1永远等于1,所以这句话可以理解为SELECT * FROM Employee WHERE 1 = 1 AND EmpoyeeName = QuotedStr(Edit1.Text)
如果Trim(edtEmployeeName.Text) =‘’的话,sql语句就是SELECT * FROM Employee WHERE 1 = 1,等价于select * from employee;
也就是说,1=1是为了语法上的正确,避免出现这种情况:'SELECT * FROM Employee WHERE
Filtered := False;
Filter := '';
if Edit1 <> '' then
Filter := Filter + '(' + Trim(Edit1.Text) + ')';
if Edit2 <> '' then
Filter := Filter + 'AND' + '(' + Trim(Edit1.Text) + ')';
...
Filtered := True;