XMLファイルがあります:
<SMS>
<Number>+447761692278</Number>
<DateTime>2009-07-27T15:20:32</DateTime>
<Message>Yes</Message>
<FollowedUpBy>Unassigned</FollowedUpBy>
<Outcome></Outcome>
<Quantity>0</Quantity>
<Points>0</Points>
</SMS>
<SMS>
<Number>+447706583066</Number>
<DateTime>2009-07-27T15:19:16</DateTime>
<Message>STOP</Message>
<FollowedUpBy>Unassigned</FollowedUpBy>
<Outcome></Outcome>
<Quantity>0</Quantity>
<Points>0</Points>
</SMS>
XMLReaderを使用してファイルをデータセットに読み込み、datagridviewに表示します。データを表示する日付の範囲を指定できるようにしたい。たとえば、要素にINSERTDATEとINSERTDATEの間の日付が含まれている場合。これを行うために、私はDATAVIEWを使用してから、データセットの代わりにdataviewをdatagridviewに入力しています。
現在、私は以下のような方法を持っています:
public void DisplayRecSmsByDateRange(string date1,string date2, string readDir)
{
DataSet ds = new DataSet("SMS DataSet");
XmlDataDocument xmlDatadoc = new XmlDataDocument();
xmlDatadoc.DataSet.ReadXml(readDir);
ds = xmlDatadoc.DataSet;
DataView custDV = new DataView(ds.Tables["SMS"]);
custDV.RowFilter = String.Format("(DateTime >= DateTime LIKE '{0}*' AND DateTime <= DateTime LIKE '{1}*')", EscapeLikeValue(date1), EscapeLikeValue(date2));
this.dataGridView1.DataSource = custDV;
}
問題は、xmlファイルを見ると、要素に日付だけでなく時刻も含まれていることです。この要素の時間部分には関心がないため、「LIKE」ステートメントを使用して、要素の日付部分のみに基づいてxmlファイルのデータを表示します。この結果、たとえば「2009-07-27から2009-07-30までの日付のデータを表示してください」というブール演算を実行しようとすると、コンパイラが気に入らないためにエラーが発生します。 LIKE演算子をブール値の<=、> =演算子(上記のメソッドに表示)と組み合わせようとしています。これを回避する方法はありますか?ある範囲の日付の間のデータを表示できるようにする必要がありますが、LIKE演算子を使用して、要素の最初の部分のみに基づいて検索します。
よろしくお願いします。
敬具。