Delphi中的查询(100分)

  • 主题发起人 主题发起人 luckyhua
  • 开始时间 开始时间
L

luckyhua

Unregistered / Unconfirmed
GUEST, unregistred user!
我是一个初学者!我编了一个小程序,想实现按某字段查询,但做来做去都以失败告终!请各位大腕献上几招,教教我这个初学者吧!谢了!我的程序是这样的:select * from ku where name=name
 
你把你的程序贴出来。
 
query.SQL.Text:='select * from ku where name= :name'
query.ParamByName('name').AsString:= edit_nam.Text
query.Open
 
建议采用参数查询,虽然写起来麻烦点,但很灵活。
(我再来灌点水:))
Query1.SQL.Clear;
Query1.SQL.Add('select * from ku where name = :Name');
Query1.Params[0].AsString:=Edit1.Text;
Query1.Open;
在Edit1中输入查询关键字
 
table1.fileter:=条件;
table1.filtered:=true;
 
如果您不是采用参数查询,而是在QUERY的SQL属性中ADD的话要注意字段的类型。
例如字段是整型时,可以这样:
SELECT * FROM DATA.DBF WHERE NAME=888
//直接在等于后写要比较的值
当字段是字符型时,要这样:
SELECT * FROM DATA.DBF WERER NAME='汤笑'
//注意单引号
如果您是用EDIT1来输入姓名的,可以这样:
QUERY1.CLOSE;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT * FORM DATA.DBF');
QUERY1.SQL.ADD('WHERE NAME='''+EDIT1.TEXT+'''');
QUERY1.OPEN;
如果您的其他属性都设置正确了,DBGRID1中就能显示出
//假定您是用DBGRID,DATASOURSE,QUERY来连接的.
姓名等于'汤笑'所有人员.
另外,SQL可以使用通配符,比如%代表任意长度的字符,以上语句可以
写成:
QUERY1.CLOSE;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT * FORM DATA.DBF');
QUERY1.SQL.ADD('WHERE NAME=''%'+EDIT1.TEXT+'%''');
QUERY1.OPEN;
这样,当您在EDIT1中输入'汤'时,查询出的结果就是所有姓名中
包含'汤'的人员,什么'汤笑','汤镇宗','菜汤'都出来啦!
 
他们说对了,参数名前要加':"
 
还可以用 dataset.locate
 
这也可做为一个办法。
query1.close;
myname:='abc';
query1.clear;
query1.sql.add('select * from ku where name='+myname);
try
query1.open;
except
query1.execsql;
end;
 
应该是这样 select * from ku where name= :name
注意要加':'号
 
使用通配符应该是这样
QUERY1.CLOSE;
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT * FORM DATA.DBF');
QUERY1.SQL.ADD('WHERE NAME Like ''%'+EDIT1.TEXT+'%''');
//Not "="
QUERY1.OPEN;
 
多人接受答案了。
 
后退
顶部