0

このコードで「And」演算子エラーの前に Missing operand をスローするページがあります。

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 テーブル、文字列式、Type タイプ) System.Data.Select..ctor(DataTable テーブル、文字列 filterExpression、文字列ソート、DataViewRowState recordStates) システム。 c:\Projets\Intranet\Timesheets\Timesheets\Rapports\insptest\inspectionrapport.aspx.cs:line 45 の Data.DataTable.Select(String filterExpression, String sort) inspectrapport.fonctions.Page_Load() 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,

4

1 に答える 1

0

同じエラーが発生し、式にソート式を修飾しない値が含まれている場合にエラーが発生することがわかりました。例: テーブルには、列 A に 1 または 2 の 2 つの値しか含まれていませんが、コードは値 3 または空白に基づいて行をフィルター処理しようとします。

取得した値を印刷してみてください。おそらく、間違った式が見つかるでしょう。

于 2015-05-19T05:29:41.880 に答える