web-dev-qa-db-ja.com

DataView.RowFilterの日付を比較しますか?

私はかなり愚かであるが明らかに難しい何かに頭を悩ませています。

DataView dvFormula = dsFormula.Tables[0].DefaultView;
dvFormula.RowFilter = "'" + startDate.ToString("yyyyMMdd") + "' < EndDate OR EndDate = '19000101'";
dvFormula.Sort = "FromDate ASC";

結果は次のとおりです。

System.StringおよびSystem.DateTimeに対して「<」操作を実行できません。

この問題を解決する最善の方法を教えてください。

大変感謝いたします!

12
Peter

日付はアポストロフィではなく#で囲む必要があります。

dvFormula.RowFilter = "#" + startDate.ToString("MM/dd/yyyy") + "# < EndDate OR EndDate = #1/1/1900#"; 
23
Dan

これが解決策です。これを試して:

filter = " (Date >= #" +
         Convert.ToDateTime(txtFromDate.Text).ToString("MM/dd/yyyy") +
         "# And Date <= #" +
         Convert.ToDateTime(txtToDate.Text).ToString("MM/dd/yyyy") +
         "# ) ";
10
Darsh

データプロバイダーによっては、日付を#文字ではなく'文字でエスケープする必要がある場合があります。さらに、日付が正しく日付として認識されるように、日付をYYYY-MM-DDの形式でフォーマットします。

4
Ryan Brunner