2016-04-22 36 views
1

是否可以将表添加到AX 2012中的Database Logging选择列表中?如果是,是否可以选择每个表格出现在哪个类别?Dynamics AX 2012 - 将表添加到数据库记录选择列表

系统管理>数据库>数据库日志设置>新

当我选择Show all tables,一些表仍然没有出现。这些表格也不出现在Not specified类别中。

我们需要记录额外的AX构建的参数表以及开发者构建的表。开发人员表是在开发工作区中构建的,因此我们可以访问所有表格属性。

DatabaseLogggingList

回答

3

可以在形式SysDatabaseLogWizard添加新的按钮形式与自定义代码

AddByTableName

void clicked() 
{ 
    TableId promptTableId; 

    Dialog d; 
    DialogField df; 

    void createLine(DatabaseLogType logType) 
    { 
     DatabaseLog.logTable = promptTableId; 
     DatabaseLog.LogType = logType; 

     DatabaseLog.insert(); 
    } 

    d = new Dialog("Enter table name"); 
    df = d.addField(extendedTypeStr(TableName)); 
    d.parmIsModal(true); 

    if (d.run()) 
    { 
     promptTableId = tableName2id(df.value()); 
     if (!promptTableId) 
     { 
      throw error(strFmt("Table %1 does not exists", df.value())); 
     } 

     ttsBegin; 
     createLine(DatabaseLogType::Insert); 
     createLine(DatabaseLogType::Update); 
     createLine(DatabaseLogType::Delete); 
     ttsCommit; 

     SysFlushDatabaseLogSetup::main(); 

     info(strFmt("For table %1 (%2) records are created: %3, %4, %5." 
      , tableId2name(promptTableId) 
      , tableId2pname(promptTableId) 
      , DatabaseLogType::Insert 
      , DatabaseLogType::Update 
      , DatabaseLogType::Delete 
     )); 
    } 

    super(); 
} 
+0

谢谢,这工作。 –

1

方法buildTableTree似乎开始寻找答案的好地方你问题:

是否可以将表添加到AX 2012中的数据库日志选择列表 ?

是的,这是可能的。

如果是,是否可以选择每个表出现在哪个类别?

是的,你必须修改表的配置键来改变类别。请注意,根配置密钥用作类别,因此请首先检查表的配置密钥是否具有父密钥(例如,表CommissionCustomerGroup的配置密钥为Commission,配置密钥LogisticsBasic为父密钥,因此该表出现在类别Trade )。

请注意,更改配置密钥可能会产生额外的后果,我不建议仅仅更改数据库日志记录选择的类别。

关于你的观察,有些表中未列出,也有必须满足这样一个表被列出了几个条件:

  • 必须启用(dictTable.enabled(),我猜,这意味着配置密钥启用)
  • 具有表组主或选择“显示所有表”已启用或表已经建立了用于记录
  • 表既不是表SysDataBaseLog也不SysUserLog
  • 表不是临时表
  • 表是不是一个地图
  • 一个DictTable实例可以为表ID创建

如果缺少表满足这些条件,我建议的调试方法buildTableTree形成SysDatabaseLogWizard来找出为什么表格没有添加到树形控件中。

+0

感谢您的信息,细节非常方便完成我的任务。 –

相关问题