再问一次axapta问题(在AX2009和sql-server 2008 r2上运行):当插入或更新的数据集存储在相关数据库中时,确切的时间点是什么?
其目的是调用sql-server上的一个存储过程,该过程将数据从ax表(例如inventtable )传输到另一个表(不是用axapta生成)。通过odbc从axapta对一个表方法执行存储过程(即使在超级( )调用之后)也会触发存储过程,但是在通过smss ( select * from dbo.inventtable )进行选择时,不会找到刚刚在ax中添加或修改的数据。
据我所知,数据已经存储在数据库中的唯一地方是关于表单的数据源上的方法,但这将是非常丑陋的,因为数据可以通过ax中的n个表单进行编辑。
那么,有没有一种方法可以将调用放在表上,而不是放在表单的数据源上?
感谢您的提前提示!
发布于 2010-09-02 18:57:43
AX数据在insert()/update()方法中的doInsert()/doUpdate()或super()调用点“存储”在数据库中。
然而,正如Jay所提到的,这些记录对其他事务是不可见的(除非您显式地允许脏/未提交的选择)。因此它可能对您的存储过程不可见。
我不建议在insert()/update()中调用存储过程,因为这会影响性能,而您现在又依赖于另一个活动的数据库!
要走的路:
出于此目的,
日志表布局(百万中的一个):
AX表的3=delete
建议:
DATAAREAID (必须以这种方式拼写)。LogStatus更新为1,在连接和更新之后将其更新为2。发布于 2010-09-01 23:58:31
将调用放在insert()或update()表方法中的super()调用之后是正确的做法,但是,除非执行未提交的读操作,否则在AX中的事务提交之前,存储过程中的select语句将看不到数据。
您是否可以使用来自X++的ODBC连接直接写入外部表,而不是通过存储过程间接写入?
https://stackoverflow.com/questions/3618997
复制相似问题