有一查询需要在一个查询中(query集)加条件产生另一query
代码库dm和市场库sc
查找一个代码dm_code在市场库中已开通交易s_jy的,同时符合指定特征的dmedit
dm_sclb为市场类别,两库都有的, With bddata.Query1 Do Begin
     Close;
     SQL.Clear;
     SQL.Add('SELECT * from dm where (dm_code like :param1) and '+
        '(dm_sclb in (select s_sclb from sc where (s_jy=true)))');
     Parameters.ParamByName('param1').value:=dmedit.Text+'%';
     prepared;
     Open;
  end;以上查询不报错,但不能返回任何符合条件的记录。
各位高手帮忙看一下,错在哪里。

解决方案 »

  1.   

    试试这样
    'SELECT * from dm where (dm_code like '':param1'') and '+
            '(dm_sclb in (select s_sclb from sc where (s_jy=true)))'
      

  2.   

    出现报错,说param1参数没找到
      

  3.   

    肯定不能加引号。注意一下Like,这东西常常是逻辑错误的祸根。
      

  4.   

    跟踪一下,是sql条件写的不对,先把sql调试好,然后再写代码。
      

  5.   

    很奇怪的,
    将第二个参数去掉,直接写进SQl语句,就ok了,
      

  6.   

    你把你组合后的 SQL ShowMessage出来看看数据类型是否正确另外 我认为您不是必须的使用这种参数方式因为根据您的代码看来 您完全可以“构造”好SQL 再添加进去 再执行那样出错率就极少@_@