求解:下面源代码中 运行7.0调试, 为何MD001,MD002 ,MD003,MD004,MD005,MD006,的数值都能查询,显示到界面来。
     用 SQL却可以查找出来。//依据公司别查找表ACTMD中的数据
procedure TfWF_ACTMBToACTTB.SearchACTMD();
begin
  SearchSQL:='SELECT ACTMD.*,MA008 FROM '+
             '('+
               'SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD ACTMD'+
               ' UNION ALL '+
               'SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD'+
             ') ACTMD'+ ' LEFT JOIN '+ trim(ComboBox1.Text)+'..ACTMA ACTMA ON MA001=MD001'+
             ' WHERE MD003='+''''+ComboBox2.Text+''''+' AND MD004='+''''+ComboBox3.Text+''''+//' AND MD005<>0'+
             ' AND (MA008='+''''+'2'+''''+' OR MA008='+''''+'3'+''''+')'+ ' AND MD001<>'+''''+'3353'+''''+
             ' ORDER BY MD001';
  try
    with fdm_WF.qryUN_SUM do
    begin
      sql.Clear;
      sql.Add(SearchSQL);
      open;
    end;
  except
    showmessage('查询数据错误!');
    abort;
  end;
end;

解决方案 »

  1.   

    求解 :是数值都不能查询出来,不能显示到界面来。 
        用 SQL却可以查找出来。 
      

  2.   

    唉,你的代码看着费神~~加上红色的部分,看看你的SQL语句正确不正确?
    procedure TfWF_ACTMBToACTTB.SearchACTMD(); 
    begin 
      SearchSQL:='SELECT ACTMD.*,MA008 FROM '+ 
                '('+ 
                  'SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD ACTMD'+ 
                  ' UNION ALL '+ 
                  'SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 FROM '+trim(ComboBox1.Text)+'..ACTMD'+ 
                ') ACTMD'+ ' LEFT JOIN '+ trim(ComboBox1.Text)+'..ACTMA ACTMA ON MA001=MD001'+ 
                ' WHERE MD003='+''''+ComboBox2.Text+''''+' AND MD004='+''''+ComboBox3.Text+''''+//' AND MD005 <>0'+ 
                ' AND (MA008='+''''+'2'+''''+' OR MA008='+''''+'3'+''''+')'+ ' AND MD001 <>'+''''+'3353'+''''+ 
                ' ORDER BY MD001'; 
      try 
        with fdm_WF.qryUN_SUM do 
        begin 
          sql.Clear; 
          sql.Add(SearchSQL); 
          Showmessage(SearchSQL);
          //open; 
        end; 
      except 
        showmessage('查询数据错误!'); 
        abort; 
      end; 
    end;
      

  3.   

    呵呵 不好意思 到目前为止我就是看不出我哪里错了 用SQL查询数据是有的
      

  4.   

    你用Showmessage(SearchSQL); 得到的语句是没有问题的吗?
    比如,一些条件的值到底是字符还是数字?你看你加的单引号又没有问题,有的时候,delphi编译是通过了,但还是会查不出来数据的~~~
      

  5.   

    查出来的结果如下  唉 痛苦 到底哪里错了。
    SELECT ACTMD.*,MA008 FROM(SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 
    FROM WAY2006..ACTMD UNION ALL SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 
    FROM WAY2006..ACTMD)ACTMD LEFT JOIN WAY2006..ACTMA ACTMA ON MA001=MD001 WHERE MD003='2009'
    AND MD004='02'AND (MA008='2'OR MA008='3')AND MD001<>'3353' ORDER BY MD001
      

  6.   

    SELECT ACTMD.*,MA008 FROM
    (SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM WAY2006..ACTMD 
    UNION ALL SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 
    FROM WAY2006..ACTMD)ACTMD 
    LEFT JOIN WAY2006..ACTMA ACTMA ON MA001=MD001 
    WHERE MD003='2009'AND MD004='02'AND (MA008='2'OR MA008='3')AND MD001<>'3353' ORDER BY MD001
      

  7.   

    SELECT ACTMD.*,MA008 FROM
    (SELECT ACTMD.COMPANY,MD001,MD002,MD003,MD004,MD005,1 TB004,MD007 FROM WAY2006..ACTMD 
    UNION ALL SELECT COMPANY,MD001,MD002,MD003,MD004,MD006,-1 TB004,MD007 
    FROM WAY2006..ACTMD)ACTMD 
    LEFT JOIN WAY2006..ACTMA ACTMA ON MA001=MD001 
    WHERE MD003='2009'AND MD004='02'AND (MA008='2'OR MA008='3')AND MD001<>'3353' ORDER BY MD001提示错误:服务器: 消息 107,级别 16,状态 2,行 1
    The column prefix 'ACTMD' does not match with a table name or alias name used in the query.
    请教是什么意思