with query1 do
begin
   close;
   sql.clear;
   sql.Add('select * from ywslb where  clbz="Y" order by convert(integer,ywlsh)');
   //params[0].Value:=czybm;
   prepare;
   open;
end;
以上语句编译时没有问题,运行时出错,提示如下:
Project bkff.exe raised exception class EDBEngineError with message 'Invalid use of key word.
Token:(inteter,ywlsh)
Line Number:'1'.Process stoppen.Use Step or run to continue.
sql语句在Sql server上运行过是没有问题的,初步怀疑是编译器把Add里面的()双括号当做运算符了,这是什么问题啊?怎么解决?怎么样把括号和括号里的内容当字符传给Sql server 服务器?

解决方案 »

  1.   

    sql.Add('select * from ywslb where  clbz="Y" order by convert(integer,ywlsh)');
    改:
    sql.Add('select * from ywslb where  clbz='+''''+'y'+''''+' order by convert(integer,ywlsh)');
      

  2.   

    楼上的改的跟没改一样,关键是看你的语句在使用的数据库里是否能运行,我看问题可能出在
    convert(integer,ywlsh), 你的数据库是否支持此关键字啊?
    建议在数据库自带的查询分析器里试一试
      

  3.   

    查询过拉,在分析器是可以的,convert的作用是把原来为char类型的ywlsh字段转换成interger类型的
      

  4.   

    在分析器是可以的,convert的作用是把原来为char类型的ywlsh字段转换成interger类型的
      

  5.   

    好像只要是用bde,在Tquery里有()就不行,delphi不是这样不济吧?!!!
      

  6.   

    望高手出来指点一二啊!!!好像BDE都有这个问题,大家帮忙试一试。急啊!!!
      

  7.   

    sql.Add('select * from ywslb where  clbz="Y" order by convert(integer,ywlsh)');
    convert??想必用的是SQL Server吧?
    在SQL Server中,整型不是integer表示,是int~搞清楚~