您的位置:首页 > 其它

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

2011-09-27 14:30 645 查看

多元素扩展类型

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: