AX 2009 多元素扩展类型和其界面控件的使用

多元素扩展类型

AX下扩展类型,除了关联表外,还有个多元素扩展的特性。表字段继承这个扩展类型后,这个表字段就会像数组一样来使用。

扩展类型下建立的多个元素

表里显示只会有一个字段,但是实际上是一个数组字段

 

AX的控件都有父类。IntEdit控件,其父类是FormIntControl。RealEdit控件,其父类是FormRealControl。等等对应,不多例举。

这样就可以轻松获取控件,并操作。

不做细讲,代码很简单。直接贴出功能代码,看注释即可明白

public void Sreach(TransDate day = today())
{
    int                             m_T,m_count,m_c,m_j,m_d;
    utcDateTime                     m_StartTime,m_EndTime;
    TransDate                       m_Day;
    ProdJournalTable                m_ProdJourTable;
    ProdJournalRoute                m_ProdJourRoute;
    ProcessYieldAmountTable         m_TempTable;
    ProdTable                       m_ProdTable;
    FormIntControl                  m_IntControl;
    ProcessYieldCountTable          m_CountTable;
    ;

    m_Day = day - 1;
    m_c = 0;
    m_CountTable.clear();

    for(m_T = 0;m_T < 24;m_T++)
    {
        m_StartTime = DateTimeUtil::newDateTime(m_Day,72000 + 3600 * m_T);
        m_EndTime = DateTimeUtil::newDateTime(m_Day,72000 + 3600 * (m_T + 1));
        m_count = 0;
        ttsbegin;

        while select m_ProdJourRoute join m_ProdJourTable where m_ProdJourRoute.JournalId == m_ProdJourTable.JournalId
        && m_ProdJourTable.Posted == true && m_ProdJourTable.PostedDateTime >= m_StartTime
        && m_ProdJourTable.PostedDateTime <= m_EndTime
        {
            //奇偶判断,这边是单行双字段显示
            if(m_t mod 2)
            {
                m_j = 2;
            }
            else
            {
                m_j = 1;
            }

            m_count++;

            m_TempTable.clear();
            m_TempTable.TimeTitle = strfmt("%1 - %2",m_StartTime,m_EndTime);
            m_TempTable.ProdId[m_j] = m_ProdJourRoute.ProdId;
            m_TempTable.ItemId[m_j] = ProdTable::find(m_ProdJourRoute.ProdId).ItemId;
            m_TempTable.FlowId[m_j] = m_ProdJourRoute.IWS_FlowId;
            m_TempTable.QtyGood[m_j] = m_ProdJourRoute.QtyGood;
            m_TempTable.TransDateTime[m_j] = m_ProdJourTable.PostedDateTime;
            m_TempTable.insert();
        }

        if(!m_ProdJourRoute)
        {
            m_TempTable.clear();
            m_TempTable.TimeTitle = strfmt("%1 - %2",m_StartTime,m_EndTime);
            m_TempTable.insert();
        }

        ttscommit;

        //label setting
        m_c = m_T + 1;
        m_IntControl = element.design().controlName(strfmt("ProcessYieldCountTable_YieldCount[%1]",m_c));
        m_IntControl.label(strfmt("%1 - %2",strdel(DateTime2str(m_StartTime,0),0,7),strdel(DateTime2str(m_EndTime,0),0,7)));

        m_CountTable.YieldCount[m_c] = m_count;
    }
 
    m_CountTable.insert();
    //设置临时表
    
//刷新数据源
    ProcessYieldAmountTable.setTmpData(m_TempTable);
    ProcessYieldAmountTable_ds.research();
    ProcessYieldCountTable.setTmpData(m_CountTable);
    ProcessYieldCountTable_ds.research();
}

 

posted @ 2011-09-27 14:30  Kurodo  阅读(314)  评论(0编辑  收藏  举报