我有如下语句:  with DataModule1.wgQuery do                 
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select Distinct tjzb From t_rule_wg');
    SQL.Add('Where tjbh In OpenQuery(test,''Select  
             zxbh From t_br_temp'')');
    Prepare;
    Open;
  end;
在单步执行时,说在上面第六行中openquery附近有语法错误。不知怎么改,急盼指点啊!
好急啊!

解决方案 »

  1.   

    一般有子查询的话,应该是写成
    SQL.Add。Text = 'Select Distinct tjzb From t_rule_wg Where tjbh In (Select  
    tjbh From t_br_temp)'
      

  2.   

    你什么数据库?改为这样:
    'Select Distinct tjzb From t_rule_wg Where tjbh In (Select  
                 zxbh From t_br_temp'
      

  3.   

    'Where tjbh In (select zxbh from OpenQuery(test,''Select  
                 zxbh From t_br_temp)''
      

  4.   

    其实不就是加一个过滤条件吗?
    不知道你为什么要那么写?
    'Select Distinct tjzb From t_rule_wg Where tjbh In (Select  
                 zxbh From t_br_temp'
      

  5.   

    ORACLE数据库
    改为:
        SQL.Clear;
        SQL.Add('Select Distinct tjzb From t_rule_wg');
        SQL.Add('Where tjbh In (Select zxbh From t_br_temp)');
        Prepare;不过,楼主语句有问题呀!tjbh In (Select zxbh From t_br_temp)这条件永远不成立,t_br_temp表中zxbh字段和t_rule_wg表中tjbh字段的值一样吗?如果一样,语句要改成
        SQL.Add('Where tjbh In (Select zxbh tjbh From t_br_temp)');
    如果不一样,则语句不会有结果返回的!
      

  6.   

    如果test配好的话
    改为
    with DataModule1.wgQuery do                 
      begin
        Close;
        SQL.Clear;
        SQL.Add('Select Distinct tjzb From t_rule_wg');
        SQL.Add(' Where tjbh In (Select * from OpenQuery(test,''Select  
                 zxbh From t_br_temp'')');
        Prepare;
        Open;
      end;