我在使用ADOQuery时,如果参数的参数值为中文,会被截断???
比如 sql为:
Query.sql.add('select * from table1 a');
Query.sql.add('inner join table2 b on a.id=b.id');
Query.sql.add('inner join table3 c on a.id=c.id and c.name=:_Na');
Query.sql.add('where a.Par=:_Pa');
Query.sql.ParamByName('_Na').Value:='2006';
Query.sql.ParamByName('_Pa').Value:='参数';
Query.open;最后在查询跟踪器跟踪出的查询语句中  '_Pa' 参数变为'参'但如果把[c.name:_Na]这个条件放到[where a.Par=:Pa]后,跟踪器出来的参数值正确~~~~何解??

解决方案 »

  1.   

    Query.sql.add('select * from table1 a');
    Query.sql.add('inner join table2 b on a.id=b.id');
    Query.sql.add('inner join table3 c on a.id=c.id and c.name=:_Na');
    Query.sql.add('where a.Par=:_Pa');
    Query.sql.ParamByName('_Na').AsString:='2006';  //试试看
    Query.sql.ParamByName('_Pa').AsString:='参数';  //
    Query.open;
      

  2.   

    上边错了,应该这样
    Query.sql.add('select * from table1 a');
    Query.sql.add('inner join table2 b on a.id=b.id');
    Query.sql.add('inner join table3 c on a.id=c.id and c.name='':_Na'''); //
    Query.sql.add('where a.Par='':_Pa''');  //这两行的引号。
    Query.sql.ParamByName('_Na').Value:='2006';
    Query.sql.ParamByName('_Pa').Value:='参数';
    Query.open;
    另外仔细看看'_Pa''_Na'的类型定义是不是错了。
      

  3.   

    或者试试:Query.ParamByName('_Pa').Value := Variant('参数');
      

  4.   

    是delphi7么??
    我用delphi5打过ado补丁也是如此的
    并且还是2台机器也是同样的问题
    不会有这么妖孽的问题吧!