我用dbExpress中的SimpleDataSet组件,其中的dataset中的commandtext为‘select * from hyjbxx where gkxm like :m_gkxm’其中参数:m_gkxm为ftString类型,并且定义初试值为%.按理说这个Dataset初始应该是全部记录都显示出来,可是初始的时候一条记录也没有,如果这个m_gkxm:='%%%%'
那么姓名是2个字的记录就出来了,如果:='%%%%%%'
那么姓名是3个字的记录就出来了,
在查询分析器里一切正常,'%'匹配的是所有记录参数已经初始化了,在设置DATASET的属性的时候就把参数的初始值设定为 ftString '%'后台数据库为MSSqlServer2000偶一次只能送100分,不够可另开贴加
那么姓名是2个字的记录就出来了,如果:='%%%%%%'
那么姓名是3个字的记录就出来了,
在查询分析器里一切正常,'%'匹配的是所有记录参数已经初始化了,在设置DATASET的属性的时候就把参数的初始值设定为 ftString '%'后台数据库为MSSqlServer2000偶一次只能送100分,不够可另开贴加
解决方案 »
- ocx 与dax error
- 请问delphi 7 中用ADO方式连接
- 有什么好办法可以将html代码转换成显示后的内容
- delphi的字段名可以用字符串代替吗?
- 学websnap好痛苦,没有详细的资料,即使有也是简单例子,这样的书籍我也会写,以最强烈的方式,希望有更多李维站出来,我愿意以书价十倍
- 悄悄地 我走了 正如我悄悄的来
- 有谁处理过这样的东西?
- 发什么消息可以让当前form最小化?
- 如何使鼠标在动态创建的三个按钮上浮动时,改变字体的颜色或改变图片
- 我问的如何在DBGrid表格控件中为表格添加色带的问题,即第一行为灰色,第二行为白色,第三行为灰色,第四行为白色,依次类推,只能在Delphi自带的数据库中实现,
- 求qq的通信协议的原代码
- 初学delphi中遇到的小问题,难懂,请师傅,不甚感谢!
有时候我在ACCESS里也有这种事儿出来.
adoquery1.SQL.clear;
adoquery1.SQL.Add('select count(*) from cz常住人口表 where c21 like :c');
adoquery1.Parameters.ParamByName('c').Value:='%%';
adoquery1.Open;
而%只能替代一个字节,所以显示不出来试试用%%代替任何一个汉字,应该可以
adoquery1.Parameters.ParamByName('c').Value:='%%';
确实是%匹配1个字符,%%匹配一个汉字但是%%%就能匹配2个汉字,效果和%%%%是一样的另外在sqlserver里面'%'即可匹配所有字符啊,为什么在delphi里就不行了呢?这个变量的值难道不是传到服务器端再执行吗?继续迷惑ing
select * from hyjbxx where gkxm like %是不是要这样
select * from hyjbxx where gkxm like '%'
这样写
可以的
这样是可以的,可是为什么参数赋值的时候就不行呢?如果参数m_gkxm:='%'+trim(edit2.Text)+'%'则就出现我开始说的情况
如果edit2.text中的值是‘王’的话,那么只能查询出姓王,并且名是一个字的记录来如果参数m_gkxm=#39+'%'+trim(edit2.Text)+'%'+#39
这样则什么记录也查询不出来,:(
with AdoQuery1 do
begin
Close;
SQL.clear:
SQL.Add('select * from hyjbxx where gkxm like :m_gkxm');
Parameters[0].Value:='%'+Edit2.Text+'%';
Open;
end;搞定!
Cds_1.CommandText:='select * from KHB where KHMC like :KHMC';
Cds_1.Params.ParamByName('KHMC').Value:='%'+Trim(Edt_S.Text)+'%';
Cds_1.Open;
但是发现,如果用‘’就不能查出来空集。
%表示全部用户,
''就是那些登录名称错误的,日志不纪录无效的用户名称,所以无效的登录日志中用户名是空。我用IB Console 用''能筛选到,但是在DBX里面就不行。
不知道为啥。
比如:sql.add(format('select * from Id like ''%s'' ',['%']));
因为可能是delphi编译的问题
用以下两种方法都可以。with qryCX do
begin
if Active then Close;
SQL.Clear;
SQL.ADD('Select * from WL');
SQL.ADD('where WL_MC like ''%'+edit1.text+'%'' ');
Open;
end;或者
with qryCX do
begin
if Active then Close;
SQL.Clear;
SQL.ADD('Select * from WL');
SQL.ADD('where WL_MC like :pMC ');
ParamByName('pMC').AsString := '%'+edit1.text+'%';
Open;
end;