又一次axapta-question(在ax 2009和sql-server 2008 r2上运行): 当插入或更新的数据集存储在关注数据库中时,这恰好是时间点吗?
目标是在sql-server上调用存储过程,该存储过程将数据从ax-tables(例如,可发明的)传输到另一个(不是用axapta生成)表。通过其中一个表方法上的axapta执行存储过程(甚至在super()调用之后)触发存储过程,但是在通过smss选择时找不到刚刚在ax中添加或修改的数据(select *来自dbo.inventtable)。
我知道数据已经存储在db中的唯一地方是关于表格上数据源的方法,但这很安静,因为数据可以通过ax中的n个表单进行编辑。
那么有没有办法将调用放在表格而不是表格'数据源?
上提前感谢提示!
答案 0 :(得分:1)
在doInsert()
方法doUpdate()
/ super()
或insert()/update()
调用时,AX数据“存储”在数据库中。
但是,正如Jay所提到的,其他事务不会显示记录(除非您明确允许脏/未提交的选择)。因此,您的存储过程可能无法看到它。
我不建议在insert()/update()
中调用存储过程,因为这会影响性能,现在你依赖另一个数据库还活着!
要走的路:
日志表布局(数百万之一):
建议:
DATAAREAID
(也必须拼写为这种方式)。LogStatus
更新为1,在加入和更新后将其更新为2. 答案 1 :(得分:0)
在insert()或update()表方法中调用super()之后的调用是正确的地方,但是除非你进行未提交的读取,否则存储过程中的select语句将看不到直到AX中的事务被提交之后的数据。
您是否可以使用X ++中的ODBC连接直接写入外部表而不是通过存储过程间接写入?