关于Like用法?
语句如下:
AdoQuery1.SQL.Add('Select 图书编号,书名,作者,类名,出版社,定价 From 图书信息 A,图书类别 B');
AdoQuery1.SQL.Add('Where (A.书名 Like :书名) and A.类别=B.类别');
AdoQuery1.Parameters.ParamByName('书名').Value:='%'+Edit1.Text+'%';
其中数据库中有书名为:‘sds’,和‘ABC’的书。当在Delphi6下运行我做的程序时,输入‘s’,能够查到
纪录‘sds’,而输入‘A’时却没有纪录,是何原因?但是在查询分析器内可以正常。
问题点数:100、回复次数:17Top
1 楼BoxFan(译作:饭盒?)回复于 2004-12-02 09:48:19 得分 10
if (EdtRegion.Text<>'') then
SqlParam:=SqlParam+' and Region like ''%'+EdtRegion.Text+'%''';
Top
2 楼IwantFlay(小飞)回复于 2004-12-02 09:56:09 得分 10
我想可能不是你的sql语句出错. 我注意到你是从两张表中通过关联得到数据的. A.类别=B.类别
我想你可能需要检查一下 书名为 'ABC' 的那条记录的类别在 图书类别 表 中是否有相同类别的记录存. :)Top
3 楼coeltdit(每天多顶几下----->>>大虾就是这样练成的)回复于 2004-12-02 09:59:08 得分 10
(1)Select 图书编号,书名,作者,类名,出版社,定价 From 图书信息 A,图书类别 B Where A.类别=B.类别
是不是符合Where A.类别=B.类别条件的数据集中没有ABC这条记录??
(2)Edit1.Text中输入ABC之前有空格?? Trim(Edit1.Text).Top
4 楼pengxuan(网虫先生)回复于 2004-12-02 10:00:53 得分 10
AdoQuery1.Parameters.ParamByName('书名').Value:=''''+'%'+Edit1.Text+'%'+'''';Top
5 楼seekmydoom(靠灌水混日子)回复于 2004-12-02 10:03:41 得分 10
赞成楼上的解释!在图书信息表 A中有含有A的书名,但也许在图书类别 B没有和A类别相关的数据Top
6 楼whythinkwhy(小生)回复于 2004-12-02 10:04:32 得分 0
有空格的话也不会显示的Top
7 楼zzlazio(sritsb)回复于 2004-12-02 10:04:40 得分 10
Select 图书编号,书名,作者,类名,出版社,定价 From 图书信息 A,图书类别 B Where A.书名 Like ''%'+Edit1.Text+'%''' and A.类别=B.类别'Top
8 楼xfgncit98(叶落思乡)回复于 2004-12-02 10:16:00 得分 10
我想可能不是你的sql语句出错. 我注意到你是从两张表中通过关联得到数据的. A.类别=B.类别
我想你可能需要检查一下 书名为 'ABC' 的那条记录的类别在 图书类别 表 中是否有相同类别的记录存. :)
---------------------------------------------
同意,你的A.类别=B.类别是什么意思?你的表的结构是怎么定义的?以及你要实现的功能是什么?Top
9 楼ysai(所有真的都是假的真,所有假的都是真的假)回复于 2004-12-02 10:17:42 得分 0
猜测:参数截断问题.
用事件探查器看看ADO提交到SQLSERVER的SQL语句,其中的参数是否被截断了Top
10 楼cctv1111(小子)回复于 2004-12-02 11:46:07 得分 0
好像不是你的語句錯誤可能是你兩個表的數據關聯有問題(沒有對應關係)Top
11 楼BigAngell(学而不思则罔 思而不学则殆)回复于 2004-12-02 11:52:15 得分 0
但是在查询分析器内可以正常。
//////////////////////////////////
楼主都说了,在查询分析器内是正常的!看看楼上几位的回答!
我想问一下楼主,你用的啥数据库,Access or MS SQL Server ?Top
12 楼ysai(所有真的都是假的真,所有假的都是真的假)回复于 2004-12-02 12:13:34 得分 5
>>楼主都说了,在查询分析器内是正常的!看看楼上几位的回答!
>>我想问一下楼主,你用的啥数据库,Access or MS SQL Server ?
质疑别人的回答.....不过
ACCESS好象没有查询分析器吧?Top
13 楼ahuige(灰不遛秋(前半身学医后半身学统计))回复于 2004-12-02 17:53:49 得分 0
有写查询的SQL语句的东西Top
14 楼BigAngell(学而不思则罔 思而不学则殆)回复于 2004-12-03 08:59:30 得分 0
质疑别人的回答.....不过
ACCESS好象没有查询分析器吧?
////////////////////////////
笑话!Top
15 楼ysai(所有真的都是假的真,所有假的都是真的假)回复于 2004-12-03 11:38:57 得分 10
BigAngell(风雨英雄)
质疑别人的回答.....不过
ACCESS好象没有查询分析器吧?
////////////////////////////
笑话!
-----------------------------------
据我所知,ACCESS只有一个查询设计器,SQL SERVER倒是有个查询分析器,难道我用的OFFICE 2003不够新?您用的ACCESS2005或者更高版本?还带了个查询分析器?请指教...Top
16 楼altans(龙纹剑)回复于 2004-12-03 12:56:26 得分 5
楼主你用的是sqlserver吧,仔细查查ABC的数据类型,如果是nvarchar的话,最好改成varchar再44Top
17 楼whbo(王红波(年轻人,要有所作为))回复于 2004-12-03 13:20:36 得分 10
AdoQuery1.SQL.Add('Where (A.书名 Like :书名) and A.类别=B.类别');里面括号去了
感觉还是sql的问题,应该是那儿写错了..
Top




