如何实现数据库中的查询显示啊?
现已经设置好ADOTable1,DataSource1,DBGrid1,并且已经连上数据库,DBGrid1中已经能显示出数据库中所有记录(ID/name/nationality/address/).我想只在DBGrid1显示符合条件的记录,但不在数据库中删除不符合条件的记录.
比如nationality=China,应该怎么做啊?
小弟对ADOTable1进行如下编程:
with ADOTable1 do
begin
Filtered:=False;
Filter:='nationality='+Quoted('China');
Filtered:=True;
end;
可是编译的时候,系统警告'ADOTable1:Filet property cannot be used for detail tables',这是什么原因啊?
该怎么正确实现我的需求啊?
问题点数:0、回复次数:7Top
1 楼tjff2000(fengyun)回复于 2003-10-03 09:36:24 得分 0
按字面好像是说过滤属性是不能用于明细表的,你可以用adoquery的。Top
2 楼lihao_ningxia(耗子)回复于 2003-10-03 10:05:07 得分 0
use query and sqlTop
3 楼cdzjhmao()回复于 2003-10-03 10:20:36 得分 0
with ADOTable1 do
begin
Active:=false;
Filter:='nationality=China';
Filtered:=True;
Active:=true;
endTop
4 楼superlionet(彼岸)回复于 2003-10-03 10:29:51 得分 0
用SQL语句多方便啊。 你这只是单纯的过滤。用SQL语句可以方便好多。能写出很多种查询条件的。Top
5 楼luo1105(凡星)回复于 2003-10-03 11:56:38 得分 0
with ADOQuery1 do
begin
close;
SQL.clear;
SQL.Add('select * from 表名');
SQL.Add('where nationality="China" ');
SQL.open;
end;Top
6 楼BarryW(小红冒)回复于 2003-10-03 15:44:06 得分 0
with ADOTable1 do
begin
Active:=false;
Filter:='nationality=China';
Filtered:=True;
Active:=true;
end
Top
7 楼siwuge(五哥)回复于 2003-10-03 16:56:03 得分 0
用ADOQUERY,如果不改变查询结果,就直接在ADOQUERY的SQL属性中写:select * from 表名 where nationality=China
如果想设置可变的查询,就在窗体上加一个EDIT(字段名)或COMBOBOX(表名),然后定义一个查询变量如:strsql:string; 然后在查询按钮的onclick事件中用:
begin
adoquery1.close;
adoquery1.SQL.clear;
strsql:='select * form '
if trim(edit1.text)<>'' then
strsql:=strsql+'"'+combobox1.text+'"'+'where ''"'+edit1.text+'"';
adoquery1.SQL.Add(strsql);
adoquery1.open;
end;
(这里的combobox中必须先选择表名)Top




