子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Exception: 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。源错误:
行 516: catch (System.Data.SqlClient.SqlException ex)
行 517: {
行 518: throw new Exception(ex.Message);
行 519: }
行 520: return ds;
源文件: E:\考勤程序开发\DUTY\Duty\DBUtility\DbHelperSQL.cs 行: 518 堆栈跟踪:
[Exception: 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。]
Maticsoft.DBUtility.DbHelperSQL.Query(String SQLString) in E:\考勤程序开发\DUTY\Duty\DBUtility\DbHelperSQL.cs:518
Duty.DAL.DutyCacl.GetList(String strWhere1, String strWhere2) in E:\考勤程序开发\DUTY\Duty\DAL\DutyCacl.cs:255
Duty.BLL.DutyCacl.GetList(String strWhere1, String strWhere2) in E:\考勤程序开发\DUTY\Duty\BLL\DutyCacl.cs:95
Duty.Web.Police.List.Button2_Click(Object sender, EventArgs e) in E:\考勤程序开发\DUTY\Duty\Web\Duty\Police\List.aspx.cs:2696
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Exception: 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。源错误:
行 516: catch (System.Data.SqlClient.SqlException ex)
行 517: {
行 518: throw new Exception(ex.Message);
行 519: }
行 520: return ds;
源文件: E:\考勤程序开发\DUTY\Duty\DBUtility\DbHelperSQL.cs 行: 518 堆栈跟踪:
[Exception: 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。]
Maticsoft.DBUtility.DbHelperSQL.Query(String SQLString) in E:\考勤程序开发\DUTY\Duty\DBUtility\DbHelperSQL.cs:518
Duty.DAL.DutyCacl.GetList(String strWhere1, String strWhere2) in E:\考勤程序开发\DUTY\Duty\DAL\DutyCacl.cs:255
Duty.BLL.DutyCacl.GetList(String strWhere1, String strWhere2) in E:\考勤程序开发\DUTY\Duty\BLL\DutyCacl.cs:95
Duty.Web.Police.List.Button2_Click(Object sender, EventArgs e) in E:\考勤程序开发\DUTY\Duty\Web\Duty\Police\List.aspx.cs:2696
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
不要胡乱写try...catch。你这样写,就无法借助于vs进行调试。当真正调试时,vs调试器会中断在出现异常的行上,并且你可以在调试窗口或者命令窗口打印出所执行的sql语句。你应该贴出来这个语句,在这个或者SQL Server论坛上去问。再次强调,为了保证开发效率,一定不要胡乱滥用try...catch。
楼主你也说了做了行转列,那么你现在的SQL并不一定适用,需要去重新按需求来写SQL语句。
改为
SELECT [col1],[col2],... FROM [T1] WHERE [id] IN (SELECT [id] FROM [T2] WHERE ...)