我使用的数据库是SQL Server,这有关系吗?

解决方案 »

  1.   

    第一个应该也正确。你不妨现在SQL ANALYZER里面先试试。
      

  2.   

    就是,用BDE Administrator 逐步执行sql语句,调试一下看。
      

  3.   

    TO Chechy(chechy):
     在SQL ANALYZER 没有问题
      

  4.   

    to chechy(chechy):
     我想可能和我在CSDN上提的一个问题有关,就是关于查询结果包含空格的那个问题,可是我按你说的将字段该为了varchar类型,也不行。
      

  5.   

    复合查询语句我是用过的,而且我的经验告诉我,只要SQL ANALYZER上运行通过的SQL,那么在程序里面就应该可以。
    如果这样都不行,是不是可以考虑那是Delphi的问题。(你安装了Pack吗?)
      

  6.   

    close;
      sql.Clear;
      sql.Add('select * from kcjlb where kcjlb.ckdm');
      sql.Add('in (select ckdm from spckb where spckb.ckmc=:p_ckmc)');
      parameters.ParamByName('p_ckmc').value:=trim(sdepot.text);
      open;
    试一下,我没把握的
    close;
      sql.Clear;
      sql.Add('select * from kcjlb where kcjlb.ckdm');
      sql.Add('in (select ckdm from spckb where spckb.ckmc=:p_ckmc) as c');
      parameters.ParamByName('p_ckmc').value:=trim(sdepot.text);
      open;
      
      

  7.   

    1. close;
      sql.Clear;
      sql.Add('select * from kcjlb where kcjlb.ckdm');
      sql.Add('in (select ckdm from spckb where spckb.ckmc=:p_ckmc)');
      parameters.ParamByName('p_ckmc').value:=trim(sdepot.text);
      open;在IN()里头的那句可能有问题,
    改为:select spckb.ckdm from spckb where spckb.ckmc=:p_ckmc 试一试
      
      

  8.   

    to chechy(chechy):
    请帮忙看看http://www.csdn.net/expert/topic/222/222327.shtm
    有惊喜呦
      

  9.   

      问题仍然没有解决,只能用第二种方法多写几行代码了,现在我开始怀疑是Delphi有问题了(我用的可是D版哪!)
      不过在程序中,有时就能用嵌套的SQL语句进行查询,我检查过数据库,使用的都是相同类型的字段,这是为什么?
      

  10.   

    BDE的试过没有?还有我记得SQL SERVER有个Profiler,可以监视SQL语句。都试试看吧。