Dynamics AX 盘点日记账行——笔记

在Grid中若要显示display方法的字段,将该方法拖拽至Grid控件,设置DataSource为数据源表,设置DataMethod为该display方法名。

若在DataSource数据源中添加了display方法,并要求显示该字段,可将该方法拖拽到Grid控件,设置DataSource为数据源所在的表,设置DataMethod为该display方法名。

为Query添加过滤条件:

QueryBiuldRange    qbrJournalName;

qbrJournalName = SysQuery::findOrCreateRange(InventJournalTrans_q.dataSourceTable(tableNum(InventJournalTable)), fieldNum(InventJournalTable, JournalNameId));

public static QueryBuildRange findOrCreateRange(QueryBuildDataSource _queryBuildDataSource, FieldId _fieldId);

该方法返回一个QueryBuildRange,可以调用这个静态方法创建Range条件。

public QueryBuildDataSource dataSourceTable(TableId table);

InventJournalTrans_q: 返回表的query

InventJournalTrans_q.dataSourceTable(tableNum(InventJournalTable)): 通过这个方法获取相关表的QueryBuildDataSource。

qbrJournalName.value('盘点');

qbrJournalName.status(RangeStatus::Locked);

对于QueryBuildRange变量,可以调用value方法赋值,调用status方法设置变量的状态。可选的状态有

RangeStatus::Hidden  //隐藏

RangeStatus::Locked  //锁定

RangeStatus::Open  //可操作

对于日期类型的QueryBuildRange变量,如果要检索时间段内的字段,可以使用如下方式:

qbrDate.value(FromDate.valueStr()+".."+ ToDate.valueStr());

它表示获取时间从FromDate到ToDate之间的记录。

查询的时候,我们调用按钮的clicked方法,先做输入参数合法性验证,然后再执行数据源的query。

void clicked()
{
    super();

    if(FromDate.dateValue() || FromDate.dateValue())
    {
        if(FromDate.dateValue() > FromDate.dateValue())
        {
            error('From date cannot greater than the end date!');
        }
        else
        {
            inventjournaltrans_ds.executeQuery();
        }
    }
    else
    {
        error('Please enter from date and to date!');
    }
}
void clicked()

在窗口打开的时候,我们可以覆写Form的init方法,为一些空间设置初始值。

public void init()
{
    super();

    ToDate.dateValue(systemDateGet());
}
public void init()

我们可以覆写主表的executeQuery()方法,执行查询操作

public void executeQuery()
{
    // Filter by journal name
    qbrJournalName = SysQuery::findOrCreateRange(InventJournalTrans_q.dataSourceTable(tableNum(InventJournalTable)), fieldNum(InventJournalTable, JournalNameId));
    if(!firstFlag)
    {
        qbrJournalName.value('Null');
        firstFlag = true;
    }
    else
    {
        qbrJournalName.value('盘点');
    }
    qbrJournalName.status(RangeStatus::Locked);

    // Filter posted records
    qbrPosted  = SysQuery::findOrCreateRange(InventJournalTrans_q.dataSourceTable(tableNum(InventJournalTable)),fieldNum(InventJournalTable, Posted));
    qbrPosted.value(enum2str(NoYes::Yes));
    qbrPosted.status(RangeStatus::Locked);

    qbrDate = SysQuery::findOrCreateRange(InventJournalTrans_q.dataSourceTable(tableNum(InventJournalTable)),fieldNum(InventJournalTable,PostedDateTime));
    qbrDate.value(FromDate.valueStr()+".."+ ToDate.valueStr());
    qbrDate.status(RangeStatus::Locked);
    super();
}
public void executeQuery()

 

posted @ 2015-06-24 17:37  WilsonLi  阅读(574)  评论(0)    收藏  举报