Delphi的Bug?(200分)

  • 主题发起人 主题发起人 davidc
  • 开始时间 开始时间
D

davidc

Unregistered / Unconfirmed
GUEST, unregistred user!
最近用SQL Server2000写一个C/S程序,数据库中有一张表,没有主键(由于是导入的数据,
很多字段值为空,没法建立主键)。
在Delphi中用一个AdoQuery(adoq)进行查询:
adoq.SQL.Text := 'SELECT * FROM tablename WHERE aField LIKE :P';
adoq.Parameter.Items[0].Value := '%'+Edit1.Text+'%';
adoq.Open;

aField是中文类型的字段,英文和数字没有问题。
返回的结果只有表结构,没有数据,但数据库中肯定有符合条件的记录。

同样一张表,如果在BDE中建立一个MSSQL类型的数据源,打开时表结构是乱的。

不知各位有否碰到类似情况?
 
刚刚下了D7,没有这个问题,所以这应该是D5、D6的BUG,看来不能用Param了?
 
:
adoq.Parameter.Items[0].Value := '''%'+Edit1.Text+'%''';
 
To delphing:
你自己试试看呢,用任何数据库,看看能不能查到你想要的数据:)
 
应该是对中文字段名的支持不好。
 
应该是这句的问题
adoq.Parameter.Items[0].Value := '%'+Trim(Edit1.Text)+'%'
 
为什么没法建立主键呢,你可以另加一个自增长字段作主键。
 
各位,我提出这个问题的目的是想看一下这是否是Delphi的一个Bug,而不是怎么去解决
我程序中的问题,事实上这个问题的解决方法有n多种。所以请提出
adoq.Parameter.Items[0].Value := ........的大侠不要再怀疑这句语法的正确性。
同样一个程序不作改动,用Delphi7编译执行,返回的结果非常正确。
jsxjd,我的字段名不是中文的,我的说明中也只是讲该字段的数据是中文。
 
不太明白你的意思,
like %xxx% 一般是对字符串进行查询
如果字段是数字,可以用各种数学函数或符号以条件进行查询,
如果要将数字字段用like运算符查询,先将转化成字符串
 
我试了一下,可以啊,而且用你的方法 :)
DELPHI5(+PACK)+WINXP++SQLSERVER2000/PROFESSIONAL+MSADO26
 
delphing:你的Param是中文吗?例如:'%中文%',而且整个表都没有主键?
 
上次参数不是,这次也成功:
adoq.Close;
adoq.SQL.Text := 'SELECT * FROM table2 WHERE 测试字段 LIKE :测试参数';
adoq.Parameters.Items[0].Value := '%'+Edit1.Text+'%';
adoq.Open;
 
也许是我没有表达清楚,我的意思是字段里面的数据是中文,而不是字段名称是中文,请问
Delphing,你的Edit1.Text是中文吗?应该不是吧
 
改成这样试试:
adoq.Params[0],AsString := QuotedStr('%'+Edit1.Text+'%');
 
多人接受答案了。
 
后退
顶部