////一个学院里所有欠费的学生
select Distinct SName,DeptName
from(SELECT Student.SID,Student.SName,Student.SDeptCode
FROM Student,Fee
WHERE Student.SID IN (
SELECT Student.SID
FROM Student,Fee
WHERE Student.SID = Fee.SID
GROUP BY Student.SID
HAVING SUM(Fee.FeeDues) > SUM(Fee.FeePaid))
AND Student.SID = Fee.SID) as a,
(select DeptCode,DeptName
from config_SDept
where DeptName = '机电工程学院') as b
where a.SDeptCode=b.DeptCode
这个语句在查询分析器上没有问题。说明不是语句的问题。但是加入query就提示SELECT附近有语法错误。
这个写对不对,大家帮我看一下strSQL:='select Distinct SName,DeptName'+
          'from(SELECT Student.SID,Student.SName,Student.SDeptCode'+
          'FROM Student,Fee'+
          'WHERE Student.SID IN'+
          '(SELECT Student.SID'+
          'FROM Student,Fee'+
          'WHERE Student.SID = Fee.SID'+
          'GROUP BY Student.SID'+
          'HAVING SUM(Fee.FeeDues) > SUM(Fee.FeePaid))'+
          'AND Student.SID = Fee.SID) as a,'+
          '(select DeptCode,DeptName'+
          'from config_SDept'+
          'where DeptName = ''' + treetext + ''') as b'+
          'where a.SDeptCode=b.DeptCode';
    AQPrintN.Close;
    AQPrintN.SQL.Clear;
    AQPrintN.SQL.Add(strSQL);
    AQPrintN.Active:=true;
    AQPrintN.Open;

解决方案 »

  1.   

    strSQL:='select Distinct SName,DeptName'+
              ' from(SELECT Student.SID,Student.SName,Student.SDeptCode'+
              ' FROM Student,Fee'+
              ' WHERE Student.SID IN'+
              ' (SELECT Student.SID'+
              ' FROM Student,Fee'+
              ' WHERE Student.SID = Fee.SID'+
              ' GROUP BY Student.SID'+
              ' HAVING SUM(Fee.FeeDues) > SUM(Fee.FeePaid))'+
              ' AND Student.SID = Fee.SID) as a,'+
              ' (select DeptCode,DeptName'+
              ' from config_SDept'+
              ' where DeptName = ''' + treetext + ''') as b'+
              ' where a.SDeptCode=b.DeptCode';
        AQPrintN.Close;
        AQPrintN.SQL.Clear;
        AQPrintN.SQL.Add(strSQL);
        AQPrintN.Active:=true;
        AQPrintN.Open;
    在每行字符串前加一空格试试
      

  2.   

    strSQL:='select Distinct SName,DeptName'+
              ' from(SELECT Student.SID,Student.SName,Student.SDeptCode'+
              ' FROM Student,Fee'+
              ' WHERE Student.SID IN'+
              ' (SELECT Student.SID'+
              ' FROM Student,Fee'+
              ' WHERE Student.SID = Fee.SID'+
              ' GROUP BY Student.SID'+
              ' HAVING SUM(Fee.FeeDues) > SUM(Fee.FeePaid))'+
              ' AND Student.SID = Fee.SID) as a,'+
              ' (select DeptCode,DeptName'+
              ' from config_SDept'+
              ' where DeptName = ''' + treetext + ''') as b'+
              ' where a.SDeptCode=b.DeptCode';
        AQPrintN.Close;
        AQPrintN.SQL.Clear;
        AQPrintN.SQL.Add(strSQL);
      //  AQPrintN.Active:=true;这句话多余,最好是去掉
        AQPrintN.Open;
    在每行字符串前加一空格试试
      

  3.   

    strSQL:='select Distinct SName,DeptName'+
              +#13#10+'from(SELECT Student.SID,Student.SName,Student.SDeptCode'+
              +#13#10+'FROM Student,Fee'+
              +#13#10+'WHERE Student.SID IN'+
              +#13#10+'(SELECT Student.SID'+
              +#13#10+'FROM Student,Fee'+
              +#13#10+'WHERE Student.SID = Fee.SID'+
              +#13#10+'GROUP BY Student.SID'+
              +#13#10+'HAVING SUM(Fee.FeeDues) > SUM(Fee.FeePaid))'+
              +#13#10+'AND Student.SID = Fee.SID) as a,'+
              +#13#10+'(select DeptCode,DeptName'+
              +#13#10+'from config_SDept'+
              +#13#10+'where DeptName = ''' + treetext + ''') as b'+
              +#13#10+'where a.SDeptCode=b.DeptCode';
        AQPrintN.Close;
        AQPrintN.SQL.Clear;
        AQPrintN.SQL.Add(strSQL);
        AQPrintN.Active:=true;
        AQPrintN.Open;