Как выполнить фильтрацию по дате и выполнить запрос формы по коду?

Мне нужно выполнить запрос формы по коду. Таблица источника данных - это CustomVendTable (это настраиваемая таблица). Я открываю форму и в моем init методе получаю вызывающую таблицу:

public void init ()
{
  VendTable = myVendTableCaller;
  myVendTableCaller = element.args().record();
// There is a dialog and get a date by a _Dialog_ and save in a date variable
  super();
}

В моем источнике данных есть запрос. Таблица в моем источнике данных связана с VendTable. Я фильтрую по коду мой DataSource по myVendTableCaller.RecId и переменную date dateByDialog, вставленную в открывающееся диалоговое окно

Мой запрос таков:

public void executeQuery()
{
query q = new Query();
QueryBuildRange qbr;
QueryBuildDataSource qbds ;
QueryRun queryRun;

qbds = q.addDataSource(tableNum(CustomVendTable) );

qbds.addRange(fieldNum(CustomVendTable, ValidFrom)).value(SysQuery::value( strFmt ("<=%1 ", _dateByDialog)) ) ;
qbds.addRange(fieldNum(CustomVendTable, ValidTo)).value(SysQuery::value( strFmt (">=%1 ", _dateByDialog))) ;
qbds.addRange(fieldNum(CustomVendTable, Vendor )).value(SysQuery::value(myVendTableCaller.recId));

queryRun = new QueryRun (q);

CustomVendTable_ds.query(queryRun.query());

super();
}

* Для информации существует Связь таблиц CustomVendTable.Vendor == VendTable.RecId

Итак, у меня проблемы! Я думаю, что не смогу сделать правильный запрос по дате. Поля ValidFrom - ValidTo относятся к типу UTCdatetime.

1) Мне нужно преобразовать свой _dateByDialog в UTC? Как сделать ? Это правильная дата моего запроса?

Учитывая, что преобразование не невозможно, моя БОЛЬШАЯ проблема заключается в том, что при фильтрации по дате, если у меня есть только одна запись с тем же диапазоном и датами, я могу как-то ее увидеть, НО если есть больше записей с такими же характеристиками (если у меня есть 2 записи) Ничего не вижу! Моя сетка форм недействительна!

Я прочитал, что вам следует установить дату и время сеанса (Я говорю об этом), чтобы контролировать даты.

Я по-прежнему считаю, что не очень хорошо строю свой запрос.

У тебя есть идеи, как мне это сделать?


person ulisses    schedule 06.02.2016    source источник


Ответы (2)


Если вы использовали DateTimeUtil :: newDateTime и сделали новые параметры UTCDateTime для дат?

https://community.dynamics.com/ax/b/alirazatechblog/archive/2012/09/03/date-to-utcdatetime-convertion-dynamics-ax-2012

person mrsalonen    schedule 17.02.2016

Возможно, вы используете таблицу, в которой используется дата вступления в силу. Вы предполагаете, что должны делать выбор самостоятельно, но это не так.

Вместо этого вызовите метод validTimeStateAsOfDate в источнике данных. Дополнительные сведения см. В этом ответе.

person Jan B. Kjeldsen    schedule 08.02.2016
comment
Также не создавайте запрос с нуля. Измените построение запроса методом init. - person Jan B. Kjeldsen; 08.02.2016