Показать сообщение отдельно
Старый 06.02.2011, 14:54   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 646 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Ага! Я, кажется, догадался, что Вы пытаетесь сделать.

У Вас отчёт на основании Query из AX, так? В принципе, есть несколько вариантов, как в него добавить диапазон дат

1) Предложение Eloy. То есть, поменять тип параметра на System.String. В принципе, все критерии для Query в итоге именно в String и конвертируются. Недостаток этого варианта: пользователи не смогут пользоваться календарем для ввода дат.

2) Предложение Ievgenii (если честно, не уверен, что сработает). Создать дата-метод с параметрами fromDate и toDate. Вернуть из него DataTable со сформированным range. Подвязать к этому дата-методу Data source, который потом использовать как источник значений для параметра query. Думаю, что работать это не будет, так как даже если возможное значение у параметра всего одно, его всё равно кто-то должен выбрать, а параметр этот, насколько я понял, предлагается сделать Internal.

3) Раз уж всё равно связываемся с дата-методами, то напишите вот такой вот простой дата-метод и используйте его вместо Query в качестве источника данных для Вашего дата-сета (на примере Query LedgerTrans):
X++:
[DataMethod(), AxSessionPermission(SecurityAction.Assert)]
public static DataTable DataMethod(DateTime fromDate, DateTime toDate)
{
    Dictionary<string, object> rangeValues = new Dictionary<string, object>();

    rangeValues.Add(
        "LedgerTrans.TransDate",    
        // формат должен быть <tableName>[.<occurrence>].<rangeName>
        // (см. http://msdn.microsoft.com/en-us/library/cc641466.aspx)
        String.Format("{0}..{1}", fromDate.ToShortDateString(), toDate.ToShortDateString()));

    return AxQuery.ExecuteQuery("select * from LedgerTrans", rangeValues);
}
----
Исправил объявление rangeValues.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me