我的SQL语句如下:
  sqlstr := 'select a.taskid, a.selfcode, a.c_wtcode, e.d_wtdate, a.cIcontent, b.dp_name, c.ciname, d.csname, a.bfr_ibsmoney, a.aft_ibsmoney ';
  sqlstr := sqlstr + ' ,a.beg_plantime ,a.end_plantime, a.deptheadadv, a.masteradv, a.st_id ';
  sqlstr := sqlstr + ' ,a.c_bilname, a.c_bilman, a.c_bilcall, a.c_conname, a.c_conman, a.c_concall, a.c_inspname, a.c_inspman, a.c_inspcall ';
  sqlstr := sqlstr + ' ,a.cicode, a.cscode, a.dp_id, e.ar_code, f.st_state ';
  sqlstr := sqlstr + ' from taskform a inner join class c on a.cicode = c.cicode ';
  sqlstr := sqlstr + '                 inner join specialty d on a.cscode = d.cscode ';
  sqlstr := sqlstr + '                 inner join department b on a.dp_id = b.dp_id ';
  sqlstr := sqlstr + '                 inner join standingorder e on a.c_wtcode = e.c_wtcode ';
  sqlstr := sqlstr + '                 inner join state f on a.st_id = f.st_id ';
  sqlstr := sqlstr + ' where ';  sqlstr := sqlstr + ' e.d_wtdate between ' + quotedstr(datetostr(dtp_begwtdate.Date)) + ' and ' + quotedstr(datetostr(dtp_endwtdate.Date)) ;
  sqlstr := sqlstr + ' order by a.c_wtcode desc ';  dm_prjmag.adoqry_taskform.SQL.Clear;
  dm_prjmag.adoqry_taskform.SQL.Add(sqlstr);  try
    dm_prjmag.adoqry_taskform.Active := true;
    dm_prjmag.adoqry_taskform.FieldByName('taskid').DisplayLabel := '[+]';
  except
    dm_prjmag.adoqry_taskform.Active := false;
  end;执行‘    dm_prjmag.adoqry_taskform.Active := true;’后就出现ambiguous column name ‘c_wtcode'"这个问题,请问如何解决?谢谢!

解决方案 »

  1.   

    c_wtcode這一列不明確, 就是多個表中有c_wtcode字段, 需要通過表名引用
      

  2.   

    看他的这个SQL好像都引用表名了。眼花!
      

  3.   

    你自己find'c_wtcode'这个字符串,看看哪里没有引用表名吧。
      

  4.   

    sqlstr :='select a.taskid, a.selfcode, a.c_wtcode, e.d_wtdate, a.cIcontent, b.dp_name, c.ciname, d.csname, a.bfr_ibsmoney, a.aft_ibsmoney ,' +
      ' a.beg_plantime ,a.end_plantime, a.deptheadadv, a.masteradv, a.st_id ,a.c_bilname, a.c_bilman, a.c_bilcall, a.c_conname, a.c_conman, ' +
      ' a.c_concall, a.c_inspname, a.c_inspman, a.c_inspcall,a.cicode, a.cscode, a.dp_id, e.ar_code, f.st_state ' +
      ' from taskform a, department b, class c, specialty d, standingorder e, state f
    where a.cicode=c.cicode and a.cscode=d.cscode and a.dp_id=b.dp_id and ' + ' a.c_wtcode=e.c_wtcode and a.st_id = f.st_id '
    ' and e.d_wtdate between ' + QuotedStr(FormatDateTime('yyyy-mm-dd', dtp_begwtdate.Date)) + ' and ' + QuotedStr(FormatDateTime('yyyy-mm-dd', dtp_endwtdate.Date)) +
    ' order by a.c_wtcode desc '  dm_prjmag.adoqry_taskform.Close;  //先关闭;
      dm_prjmag.adoqry_taskform.SQL.Clear;
      dm_prjmag.adoqry_taskform.SQL.Add(sqlstr);  try
        dm_prjmag.adoqry_taskform.Open;
        dm_prjmag.adoqry_taskform.FieldByName('taskid').DisplayLabel := '[+]';
      except
        dm_prjmag.adoqry_taskform.Active := false;
      end;
      

  5.   

    不是结果集的问题,这个错误提示就是‘不明确的列值’也就是说你的两个表里都有叫c_wtcode的字段,而你的SQL语句中要引用这个字段就应该加上表名以区分这个字段属于哪个表。所以你还是自己查查看吧。
      

  6.   

    我已找到问题,但不是这句SQL语句的问题,是在以下的语句中。
    Thank you!