Dynamics AX 2012 R2 クエリ サービスを使用しており、CustTable の modifiedDateTime フィールドでフィルター処理 (範囲を設定) する必要があります。QueryDataRangeMetadata オブジェクトを作成し、そのプロパティを設定しています。整数値では適切にフィルタリングできますが、DateTimes ではできません。
比較演算子が実際に値に埋め込まれていることがわかりました。これを整数フィールドでテストしましたが、うまくいきますが、適切に評価されるように DateTime 値をフォーマットする方法を理解できませんでした。以下のコードは機能しません。範囲は単純に無視され、CustTable からのすべてのレコードが返されます。
public static void RangeTest()
{
var client = new QueryServiceClient();
var dataSource = new QueryDataSourceMetadata
{
Table = "CustTable",
Name = "CustTable",
HasRelations = false,
Enabled = true,
DynamicFieldList = true // get all fields
};
var range = new QueryDataRangeMetadata
{
TableName = "CustTable",
FieldName = "modifiedDateTime",
Value = ">2013-02-05T21:17:33Z", // <-- ISSUE: notice the operator with the value!
Enabled = true
};
dataSource.Ranges = new QueryRangeMetadata[] { range };
var sort = new QueryDataOrderByMetadata
{
DataSource = "CustTable",
FieldName = "modifiedDateTime",
SortOrder = SortOrder.Ascending
};
var query = new QueryMetadata
{
QueryType = QueryType.Join,
DataSources = new[] { dataSource },
OrderByFields = new QueryOrderByMetadata[] { sort }
};
Paging paging = null;
var dataSet = client.ExecuteQuery(query, ref paging);
Console.WriteLine(dataSet.Tables[0].Rows.Count);
}
これらの書式設定のバリエーションも試しましたが、成功しませんでした:
Value = ">2013-02-05 21:17:33"
Value = ">2013-02-05T9:17:33"
Value = ">'2013-02-05T9:17:33'"
Value = ">2013-02-05T21:17:33Z"
この場合、DateTime の形式を知っている人はいますか?