ADO+sqlserver2000中的一个问题(100分)

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

djf813

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序如下:
dm1.Q_login.Close;
dm1.Q_login.Sql.Clear;
[red]//dm1.Q_login.sql.add('select * from ryxx where rydm="'+edit1.text+'"');[/red]
[blue]dm1.Q_login.sql.add('select * from ryxx where rydm=:rydm');
dm1.Q_login.Parameters.ParamValues['rydm']:=edit1.text;[/blue]
dm1.Q_login.Open;
if dm1.Q_login.RecordCount<>0 then
begin
rymc:=dm1.Q_login.fieldvalues['rymc'];
rymm:=dm1.Q_login.fieldvalues['rymm'];
zq:=dm1.Q_login.fieldvalues['zq'];
label3.Caption:=inttostr(length(rymm));
[green]if (rymm=edit2.text) and (Length(rymm)=Length(edit2.text)) then...[/green]
程序红色的部分执行时出错,改为下面兰色的程序执行正常,为什么?绿色的部分一直无法为真,我
试了一下,才知道rymm返回的长度和edit2.text的不同,rymm返回的不是我要的4位字符,而是数据库设
定的字段长度10位的字符,但用BDE就没有这个问题,请教如何解决才能象BDE一样返回正确的长度的字符?

 
1. dm1.Q_login.sql.add('select * from ryxx where rydm='''+edit1.text+'''');
用单引号,别用双引号
2. 你用的不是BDE,是什么?我用ADO也没有这个问题
 
将数据中rymm的类型 char(10) 改为 varchar(10) 就没问题了,
varchar是变长的(字段中记录数据的长度),char是定长的已空格填充,
BDE自动将char字段的内容 Trim 了。ADO则不。
 
我将数据中rymm的类型 char(10) 改为 varchar(10)后,返回的字符长度仍然是10,程序无法通过,
为什么?除了用trim( )函数,还有什么好办法?
 
多人接受答案了。
 
OopsWare,你的答案正确
 
后退
顶部