我有一个页面在此代码的'And'操作符错误之前抛出Missing操作数:
string filtre = (Request["pn"] == "Tous" ? "pn=pn" : "pn='" + Request["pn"] + "'");
filtre += (Request["dep"] == "Tous" ? "" : " and erreur=" + Request["dep"]);
filtre += (Request["err"] == "Tous" ? "" : " and reference=" + Request["err"]);
filtre += (Request["comp"] == "Tous" ? "" : " and compagnie='" + Request["comp"] + "'");
filtre += (Request["prob"] == "on" ? " and not reference=58" : "");
StringBuilder tbltxt = new StringBuilder();
foreach (DataRow ligne in Datatbl.Tables["ins"].Select(filtre, (Request["tridep"] == "on" ? "erreur" : "datecr")))
foreach行正在解决这个错误。
即使出现此错误,页面也会正确呈现。即使用户没有收到错误页面,通过电子邮件收到此错误也很烦人。
有人可以帮我这个吗?
谢谢
编辑:
1-此代码生成Excel工作表
2-并非所有加载页面的计算机都会生成此错误
3-我们使用的Excel是Excel 2010
4-每次产生错误时,它会抛出此错误<3次
以下是完整的错误消息:
消息:抛出了类型为“System.Web.HttpUnhandledException”的异常。
System.Data.SyntaxErrorException:语法错误:在“And”运算符之前缺少操作数。 System.Data.ExpressionParser.Parse() System.Data.DataExpression..ctor(DataTable表,String表达式,Type类型) System.Data.Select..ctor(DataTable表,String filterExpression,String sort,DataViewRowState recordStates) System.Data.DataTable.Select(String filterExpression,String sort) c:\ Projets \ Intranet \ Timesheets \ Timesheets \ Rapports \ insptest \ inspectionrapport.aspx.cs中的inspectionrapport.fonctions.Page_Load():第45行 System.Web.Util.CalliHelper.ArglessFunctionCaller(IntPtr fp,Object o) System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e) System.Web.UI.Control.OnLoad(EventArgs e) System.Web.UI.Control.LoadRecursive() System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)
答案 0 :(得分:0)
我得到了同样的错误,发现当表达式的值不符合排序表达式时,错误就会出现。例如:该表仅包含2个值:A列中的1或2,但代码尝试根据值3或空白过滤行。
尝试打印您获得的值,可能会找到不正确的表达式。