从图表中保存到其他表格(DAC)中

时间:2018-01-21 07:36:27

标签: acumatica

假设我有三个数据库表。表1,表2,表3。我为每个Graph1,Graph2和Graph3创建了他们的DAC及其相应的图形。

现在我已经为Graph1创建了一个显示Table1数据的屏幕。但是当用户在此屏幕中单击特定的操作按钮时,我想在表2和表3中保存数据。我想在每个表中插入多个记录。

我不认为在图1中将Tables2和表3添加为数据视图(PXSelect属性)是有意义的,因为它们仅在用户触发Action时使用。

在Acumatica中实现这一目标的推荐方法是什么?例如,我应该使用PXDatabase.Update还是应该创建Graph2和Graph3的实例,在其数据视图上调用update并调用PressSave?此外,是否可以将所有内容都包装在PXTransactionScope中?

1 个答案:

答案 0 :(得分:2)

请在下面找到一个代码示例,演示如何从多个BLC实例中保存单个事务中的更改:

public class MyGraph1 : PXGraph<MyGraph1>
{
    public PXAction<MyDAC> MultiGraphAction;
    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "My Magic Action")]
    protected virtual void multiGraphAction()
    {
        using (var ts = new PXTransactionScope())
        {
            // To save changes made in MyGraph1
            Actions.PressSave();

            // To save changes in MyGraph2
            var myGraph2 = PXGraph.CreateInstance<MyGraph2>();
            // Place here data manipulation logic for myGraph2
            myGraph2.Actions.PressSave();

            // To save changes in MyGraph2
            var myGraph3 = PXGraph.CreateInstance<MyGraph3>();
            // Place here data manipulation logic for myGraph3
            myGraph3.Actions.PressSave();

            ts.Complete();
        }
    }
}