可以在table里实现类似sql的查询吗(60分)

  • 主题发起人 主题发起人 春风江南
  • 开始时间 开始时间

春风江南

Unregistered / Unconfirmed
GUEST, unregistred user!
比如‘字段1>10 and 字段2<20’的查询。
 
可以用过滤功能
filter:='字段1>10'
filtered:=true;
 
楼上的说得没错
 
filter:='字段1>'10''+' and '+
'字段2<'20'';
filtered:=true;

顺便给你段初学时的代码:
procedure Tform8.BitBtn1Click(Sender: TObject);
var x,y,z,r,s,t,u,v,a,b,c,d,h,i:string;

begin
{x:=' and ';y:=' or ';z:=' and ';r:=' and ';
s:=' or ';t:=' or ';u:=' or ';v:=' or ';a:=' >= ';b:=' = ';c:='';d:='';}
if edit2.text=''
then y:=' or '
else y:=' and ';
//***************************(姓名)**********************
if radiobutton3.checked=true
then d:='党员'
else
if radiobutton4.checked=true
then d:='团员'
else
if radiobutton5.checked=true
then d:='无'
else d:='';
//****************************(选择政治面貌)****************
if radiobutton1.checked=true
then c:='男'
else
if radiobutton2.checked=true
then c:='女'
else c:='';
//******************************(选择性别)*******************
if d=''
then r:=' or '
else r:=' and ';
//*******************************(性别)*********************
if c=''
then z:=' or '
else z:=' and ';
//*******************************(政治面貌)*******************
if edit4.text=''
then s:=' or '
else s:=' and ';
//******************************(班级)***********************
if edit5.text=''
then t:=' or '
else t:=' and ';
//******************************(祖籍)***********************
if maskedit1.text=' - - '
then
begin
b:=' = ';
u:=' or ';
v:=' or ';
h:='1970-1-1';
i:='1970-1-1';
end
else
begin
u:=' and ';
h:=maskedit1.text;
if maskedit2.text=' - - '
then
begin
b:=' = ';
v:=' or ';
i:='1970-1-1';
end
else
begin
b:=' >= ';
v:=' and ';
i:=maskedit2.text;
end;
end;
//**************************************(选择年龄段或年龄)*********
table1.Filtered:=true;
if not (edit1.text='')
then
begin
if edit3.text=''
then
begin
a:=' = ';
x:=' or ';
end
else
begin
a:=' >= ';
x:=' and ';
end;
table1.Filter:='('+'('+'('+'('+'('+'('+'('+'hao'+a+''''+edit1.text+''''+x+
'hao<='''+edit3.text+''''+')'+y+
'name='''+edit2.text+''''+')'+z+
'sex='''+c+''''+')'+r+
'face='''+d+''''+')'+s+
'class='''+edit4.text+''''+')'+t+
'address='''+edit5.text+''''+')'+u+
'birthday'+b+''''+h+''''+')'+v+
'birthday<='''+i+'''';
end
else
table1.Filter:='('+'('+'('+'('+'('+'('+'('+'sex='''+'男'+''''+' or '+
'sex='''+'女'+''''+')'+y+
'name='''+edit2.text+''''+')'+z+
'sex='''+c+''''+')'+r+
'face='''+d+''''+')'+s+
'class='''+edit4.text+''''+')'+t+
'address='''+edit5.text+''''+')'+u+
'birthday'+b+''''+h+''''+')'+v+
'birthday<='''+i+'''';
end;
 
同意楼上的
 
用DataSet的Filter实现;
DataSet.Filtered := False;
DataSet.Filter := '字段1>10 and 字段2<20'
DataSet.Filtered := True;
 
后退
顶部