Acumatica 从图形保存到其他表(DAC)

Acumatica 从图形保存到其他表(DAC),acumatica,Acumatica,假设我有三个数据库表。表一、表二、表三。我已经为每个图1、图2和图3创建了它们的DAC和相应的图 现在我已经为Graph1创建了一个屏幕,它显示了表1中的数据。但是,当用户单击此屏幕中的特定操作按钮时,我希望将数据保存在表2和表3中。我想在每个表中插入多条记录 我认为在图1中添加表2和表3作为数据视图(PXSelect属性)是没有意义的,因为它们仅在用户触发操作时使用 在针灸治疗中,推荐的方法是什么?例如,我应该使用PXDatabase.Update还是应该创建Graph2和Graph3的实例,

假设我有三个数据库表。表一、表二、表三。我已经为每个图1、图2和图3创建了它们的DAC和相应的图

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

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


在针灸治疗中,推荐的方法是什么?例如,我应该使用PXDatabase.Update还是应该创建Graph2和Graph3的实例,在它们的数据视图上调用Update并按Save?此外,是否可以将所有内容都包装在PXTransactionScope中?

请在下面找到一个代码示例,该示例显示了如何保存来自多个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();
        }
    }
}
公共类MyGraph1:PXGraph
{
公共行动多图表;
[PXButton(CommitChanges=true)]
[PXUIField(DisplayName=“我的魔术动作”)]
受保护的虚拟空多重图形()
{
使用(var ts=new PXTransactionScope())
{
//保存在MyGraph1中所做的更改
操作。按Save();
//在MyGraph2中保存更改
var myGraph2=PXGraph.CreateInstance();
//此处放置myGraph2的数据操作逻辑
myGraph2.Actions.PressSave();
//在MyGraph2中保存更改
var myGraph3=PXGraph.CreateInstance();
//此处放置myGraph3的数据操作逻辑
myGraph3.Actions.PressSave();
ts.完成();
}
}
}

请在下面找到一个代码示例,该示例显示了如何保存来自多个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();
        }
    }
}
公共类MyGraph1:PXGraph
{
公共行动多图表;
[PXButton(CommitChanges=true)]
[PXUIField(DisplayName=“我的魔术动作”)]
受保护的虚拟空多重图形()
{
使用(var ts=new PXTransactionScope())
{
//保存在MyGraph1中所做的更改
操作。按Save();
//在MyGraph2中保存更改
var myGraph2=PXGraph.CreateInstance();
//此处放置myGraph2的数据操作逻辑
myGraph2.Actions.PressSave();
//在MyGraph2中保存更改
var myGraph3=PXGraph.CreateInstance();
//此处放置myGraph3的数据操作逻辑
myGraph3.Actions.PressSave();
ts.完成();
}
}
}

对于所有表,使用Graph1持久化数据应该可以。您可以在图1中为表2和表3标记操作和持久化/保存中的更新。如果其他图上有需要在更新期间执行的业务逻辑,那么拆分更新可能是有意义的。只是一个选择。谢谢你的评论。您能否更详细地解释一下如何“在图1中标记表2和表3的更新”?“标记”更新的方法是什么?请将表的视图添加到图形1中,然后仅添加视图名。更新(rowUpdate);在你坚持之前。您需要通过PXSelect获取记录,然后更新值,然后调用viewname.update()并传入要更新的DAC对象。对要更新的所有行重复此操作,然后在graph1缓存中更新所有更改。Persisting/PressSave可一次保存所有值,无需以独占方式包装在事务中。听起来不错。对于所有表,使用图形1保存数据应该可以。您可以在图1中为表2和表3标记操作和持久化/保存中的更新。如果其他图上有需要在更新期间执行的业务逻辑,那么拆分更新可能是有意义的。只是一个选择。谢谢你的评论。您能否更详细地解释一下如何“在图1中标记表2和表3的更新”?“标记”更新的方法是什么?请将表的视图添加到图形1中,然后仅添加视图名。更新(rowUpdate);在你坚持之前。您需要通过PXSelect获取记录,然后更新值,然后调用viewname.update()并传入要更新的DAC对象。对要更新的所有行重复此操作,然后在graph1缓存中更新所有更改。持久保存/按save可一次保存所有值,无需以独占方式包装交易。听起来不错