各位高手、莱鸟,100分大送,关于sql查询问题,多谢各位,发分了! (100分)

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

liyufei

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个库,对材料编号是这样的,如 1-1_1,1-1_2,1-11_1,1-111_1,1-2_1,1-12_1等进行编号,

1-1_1表示1大类下的第1小类中的第一种规格材料,
1-1_2表示1大类下的第1小类中的第二种规格材料,
1-11_1表示1大类下的第11小类中的第一种规格材料,
,类推
现在我要查找1-1即第1大类下的第一小类中的所有材料
请问用sql+query该如何编写。我下面编的这程序该如何改动
with userdate.query1 do
begin
close;
sql.clear;
sql.add('select *');
sql.add(' from kucuen.dbf');
sql.add(' where wzcode like:nam');
parambyname('nam').asstring:=edit1.text+'%';
prepare;
open;



 
sql.add('select * from kucuen.dbf where wzcode like '''+edit.text+'%''');
只要在like后面的字符加上 'string#' 引号就可以了;


 
使用substring函数
 
to wjiachun

你的这条语句可以给我讲解一下吗,
另外我希望在查询时是通过edit.text的
 
你比我还快啊,我都说错了,不支持copy的 :)
 
照我的改不就可以了吗?你试过了没有?
with userdate.query1 do
begin
close;
sql.clear;
sql.add('select * from kucuen.dbf where wzcode like '''+edit.text+'%''');
open;
end;
 
to eric.youbin
老兄,好像没用,和我的程序查询结果一样的,如查询第一大类下的第1小类即1-1
结果1-11也出来了。
 
with userdate.query1 do
begin
close;
sql.clear;
sql.add('select * from kucuen.dbf');
sql.add(' where wzcode like :nam');
parambyname('nam').asstring := edit1.text+'_%';//在%前加_就可以了。
prepare;
open;
end;
 
to yhaochuan 老师,我按你的办法好像也不行
在edit1.text中输入1-1运行后如1-11也出来了
 
sql.add('select * from kucuen.dbf where wzcode like '''+edit.text+'_''');
 
你的下划线是通配符,要这样做:
sql.add('select * from kucuen.dbf where wzcode like '''+edit.text+'[_]%''');
我在SQL SERVER 中通过

 
with userdate.query1 do
begin
close;
sql.clear;
sql.add('select * from kucuen');
sql.add('where wzcode like '''+edit1.text.trim()+'_''');
open;

 
to pyzfl老师,我刚才运行一下,怎么一条记录也没有,你还能帮我改一下吗
 
我刚才试过,只要把下划线用方括号括起来就行了,不知你用的是什么数据库?
我是在查询分析器中试的,现在我再用DELPHI试一下
 
我是用delphi,数据库为dbase型的
 
用like的恐怕不对。
sql.add('select * from kucuen.dbf where substring(wzcode,4.1)='_');
看看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=828586
里面我和Kisber的回答,正是针对你的问题。
 
with ADOQ do
begin
close;
sql.clear;
sql.add('SELECT [name] FROM [pubs].[dbo].
where name like ''' + EDIT1.Text + '[_]%''');
open;
end;
用SQL SERVER 没问题!
 
我用的不是sql server,而是本地数据库
 
我没有安装dbase方面的工具,因此没法试,肯定是通配符的问题,
如果真不行的话,你可以查一下DBASE中是如何将通配符标志为字符的,
问题就解决了!
对了,你的EDIT1中是什么内容啊,如果是'EDIT1',那就真是什么也没有的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部