procedure TForm1.Button1Click(Sender: TObject);
Var
xXXDM : String;
str1,str2,str3: String;
begin
        ADOQuery2.SQL.Clear;
        ADOQuery2.Close;
        ADOQuery2.SQL.Add('SELECT XXDM FROM SCHOOL WHERE XXMC='''+Edit1.Text+'''');
        ADOQuery2.Active := True;
        xXXDM := ADOQuery2['XXDM'];
        str1 := 'SELECT XKMC,SJSM,YSRS,JSZS,QZSSSYXJSRS,JYGWXSBJDJSRS,JYBSXWDJSRS,FJSZRS,QZSSSYXDFJSRS,JYGWXSBJDFJSZRS,JYBSXWDFJSZRS,CJXZTPJSRS,GJJCQNJJHDRS';
        str2 := 'FROM SUBJECT,DATA_DESC,SUBJECT_QUEUE ';
        str3 := 'WHERE SUBJECT_QUEUE.XKDM=SUBJECT.XKDM AND SUBJECT_QUEUE.SJSMDM=DATA_DESC.SJSMDM AND SUBJECT_QUEUE.XXDM ';
        ADOQuery1.SQL.Clear;
        ADOQuery1.Close;
        ADOQuery1.SQL.Add(str1+str2+str3+'= :dm;');
        ADOQuery1.Parameters.ParamByName('dm').Value := xXXDM;
        ADOQuery1.Active := True;
end;报错:
列前缀 'SUBJECT_QUEUE'与查询中所遇到的列名或表名不一致

解决方案 »

  1.   

    str1 := 'SELECT XKMC,SJSM,YSRS,JSZS,QZSSSYXJSRS,JYGWXSBJDJSRS,JYBSXWDJSRS,FJSZRS,QZSSSYXDFJSRS,JYGWXSBJDFJSZRS,JYBSXWDFJSZRS,CJXZTPJSRS,GJJCQNJJHDRS';仔细查查是否有错?
      

  2.   

    str1 := 'SELECT XKMC,SJSM,YSRS,JSZS,QZSSSYXJSRS,JYGWXSBJDJSRS,JYBSXWDJSRS,FJSZRS,QZSSSYXDFJSRS,JYGWXSBJDFJSZRS,JYBSXWDFJSZRS,CJXZTPJSRS,GJJCQNJJHDRS ';
            str2 := 'FROM SUBJECT,DATA_DESC,SUBJECT_QUEUE ';
            str3 := 'WHERE SUBJECT_QUEUE.XKDM=SUBJECT.XKDM AND 
    str1和str2之间未有空格分隔。
      

  3.   

    你可以设置断点跟踪一下:
    原因是你的查询语句错误,不是你写错了,而是解释的时候出现了错误;
    你把str1,str2,str3内容前面加入空格就可以了!
    比如:
    str2 := 'FROM SUBJECT,DATA_DESC,SUBJECT_QUEUE ';
    改成
    str2 := ' FROM SUBJECT,DATA_DESC,SUBJECT_QUEUE ';//注意空格