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(); }
转载于:https://www.cnblogs.com/Kurodo/archive/2011/09/27/2193115.html