Exportfile for AOT version 1.0 or later
Formatversion: 1
***Element: DBT
; Microsoft Dynamics AX Table : NVMPSqlDictionaryIdChanges unloaded
; --------------------------------------------------------------------------------
TABLEVERSION 1
TABLE #NVMPSqlDictionaryIdChanges
PROPERTIES
Name #NVMPSqlDictionaryIdChanges
Label #@HEL287
FormRef #NVMPTmpSqlDictionaryIdChanges
TitleField1 #OldTableId
TitleField2 #Name
ConfigurationKey #DataExport
SecurityKey #BasicTables
CacheLookup #Found
SaveDataPerCompany #No
TableGroup #WorksheetLine
PrimaryIndex #TableIdFieldIdIdx
ClusterIndex #TableIdFieldIdIdx
ENDPROPERTIES
FIELDS
FIELD #OldTableId
INT
PROPERTIES
Name #OldTableId
AllowEdit #No
Table #NVMPSqlDictionaryIdChanges
ExtendedDataType
ARRAY
#NVMPTableId
#
ENDARRAY
ENDPROPERTIES
FIELD #OldFieldId
INT
PROPERTIES
Name #OldFieldId
AllowEdit #No
Table #NVMPSqlDictionaryIdChanges
ExtendedDataType
ARRAY
#NVMPFieldId
#
ENDARRAY
ENDPROPERTIES
FIELD #Name
STRING
PROPERTIES
Name #Name
Mandatory #Yes
Table #NVMPSqlDictionaryIdChanges
ExtendedDataType
ARRAY
#NVMPIdentifierName
#
ENDARRAY
StringSize #40
ENDPROPERTIES
FIELD #NewTableId
INT
PROPERTIES
Name #NewTableId
Table #NVMPSqlDictionaryIdChanges
ExtendedDataType
ARRAY
#NVMPTableId
#
ENDARRAY
ENDPROPERTIES
FIELD #NewFieldId
INT
PROPERTIES
Name #NewFieldId
Table #NVMPSqlDictionaryIdChanges
ExtendedDataType
ARRAY
#NVMPFieldId
#
ENDARRAY
ENDPROPERTIES
ENDFIELDS
GROUPS
GROUP #AutoReport
PROPERTIES
Name #AutoReport
ENDPROPERTIES
GROUPFIELDS
#OldFieldId
#Name
#NewFieldId
#NewTableId
#OldTableId
ENDGROUPFIELDS
ENDGROUP
GROUP #Identification
PROPERTIES
Name #Identification
Label #@SYS5711
ENDPROPERTIES
GROUPFIELDS
#OldTableId
#OldFieldId
ENDGROUPFIELDS
ENDGROUP
GROUP #Overview
PROPERTIES
Name #Overview
Label #@SYS9039
ENDPROPERTIES
GROUPFIELDS
#Name
#OldTableId
#OldFieldId
#NewTableId
#NewFieldId
ENDGROUPFIELDS
ENDGROUP
ENDGROUPS
INDICES
#TableIdFieldIdIdx
PROPERTIES
Name #TableIdFieldIdIdx
AllowDuplicates #No
ENDPROPERTIES
INDEXFIELDS
#OldTableId
#OldFieldId
ENDINDEXFIELDS
ENDINDICES
REFERENCES
ENDREFERENCES
DELETEACTIONS
ENDDELETEACTIONS
METHODS
Version: 3
SOURCE #checkExist
#public static Boolean checkExist(NVMPTableId _tableId,
# NVMPFieldId _fieldId)
#{
# Boolean ret = true;
# ;
#
# if (!NVMPSqlDictionaryIdChanges::exist(_tableId, _fieldId))
# {
# ret = checkFailed(strfmt(NVMPSqlDictionaryIdChanges::txtNotExist(), _tableId, _fieldId));
# }
#
# return ret;
#}
ENDSOURCE
SOURCE #clearData
#public static void clearData()
#{
# NVMPSqlDictionaryIdChanges changes;
# ;
#
# ttsBegin;
#
# delete_from changes;
#
# ttsCommit;
#}
ENDSOURCE
SOURCE #exist
#public static Boolean exist(NVMPTableId _tableId,
# NVMPFieldId _fieldId)
#{
# return (NVMPSqlDictionaryIdChanges::find(_tableId, _fieldId).RecId != 0);
#}
ENDSOURCE
SOURCE #find
#public static NVMPSqlDictionaryIdChanges find(NVMPTableId _tableId,
# NVMPFieldId _fieldId,
# Boolean _forUpdate = false)
#{
# NVMPSqlDictionaryIdChanges nVMPSqlDictionaryIdChanges;
# ;
#
# if (_tableId && _fieldId)
# {
# nVMPSqlDictionaryIdChanges.selectForUpdate(_forUpdate);
#
# select firstonly nVMPSqlDictionaryIdChanges
# index hint TableIdFieldIdIdx
# where nVMPSqlDictionaryIdChanges.OldTableId == _tableId &&
# nVMPSqlDictionaryIdChanges.OldFieldId == _fieldId;
# }
#
# return nVMPSqlDictionaryIdChanges;
#}
ENDSOURCE
SOURCE #findFieldRecordByTableIdAndName
#public static NVMPSqlDictionaryIdChanges findFieldRecordByTableIdAndName( TableId _oldTableId,
# FieldName _fieldName,
# Boolean _forUpdate = false)
#{
# NVMPSqlDictionaryIdChanges nVMPSqlDictionaryIdChanges;
# ;
#
# if (_fieldName && _oldTableId)
# {
# nVMPSqlDictionaryIdChanges.selectForUpdate(_forUpdate);
#
# select firstonly nVMPSqlDictionaryIdChanges
# where nVMPSqlDictionaryIdChanges.OldTableId == _oldTableId
# && nVMPSqlDictionaryIdChanges.Name == _fieldName;
# }
#
# return nVMPSqlDictionaryIdChanges;
#}
ENDSOURCE
SOURCE #findTableRecordByName
#public static NVMPSqlDictionaryIdChanges findTableRecordByName( TableName _tableName,
# Boolean _forUpdate = false)
#{
# NVMPSqlDictionaryIdChanges nVMPSqlDictionaryIdChanges;
# ;
#
# if (_tableName)
# {
# nVMPSqlDictionaryIdChanges.selectForUpdate(_forUpdate);
#
# select firstonly nVMPSqlDictionaryIdChanges
# where nVMPSqlDictionaryIdChanges.Name == _tableName
# && nVMPSqlDictionaryIdChanges.OldFieldId == 0;
# }
#
# return nVMPSqlDictionaryIdChanges;
#}
ENDSOURCE
SOURCE #logChangeRecord
#public static void logChangeRecord( IdentifierName _name
# , TableId _oldTableId
# , TableId _newTableId
# , FieldId _oldFieldId
# , FieldId _newFieldId)
#{
# NVMPSqlDictionaryIdChanges sqlDictionaryChanges;
# ;
# ttsBegin;
#
# sqlDictionaryChanges.clear();
# sqlDictionaryChanges.OldTableId = _oldTableId;
# sqlDictionaryChanges.OldFieldId = _oldFieldId;
# sqlDictionaryChanges.NewTableId = _newTableId;
# sqlDictionaryChanges.NewFieldId = _newFieldId;
# sqlDictionaryChanges.Name = _name;
# sqlDictionaryChanges.insert();
#
# ttsCommit;
#}
ENDSOURCE
SOURCE #txtNotExist
#public static TxtNotExist txtNotExist()
#{
# return "Dictionary Id changes does not exist."; // TODO - Use label!
#}
ENDSOURCE
SOURCE #updateFieldRecordNewIdData
#public static void updateFieldRecordNewIdData( TableId _oldTableId
# , FieldName _fieldName
# , TableId _newTableId
# , FieldId _newFieldId)
#{
# NVMPSqlDictionaryIdChanges dictionaryChanges;
# ;
#
# ttsBegin;
#
# dictionaryChanges = NVMPSqlDictionaryIdChanges::findFieldRecordByTableIdAndName(_oldTableId, _fieldName, true);
#
# if(dictionaryChanges.RecId)
# {
# dictionaryChanges.NewTableId = _newTableId;
# dictionaryChanges.NewFieldId = _newFieldId;
# dictionaryChanges.doUpdate();
# }
# else
# {
# // Do not throw error because there could already be fields in the destination layer that were not part of the move
# //throw error(strFmt("Field %1 of table %2 not found in the dictionary changes table", _fieldName, TableId2Name(_oldTableId)));
# }
#
# ttsCommit;
#}
ENDSOURCE
ENDMETHODS
ENDTABLE
nl
Identificatie
@SYS5711
0
0
nl
Overzicht
@SYS9039
0
0
***Element: UTE
; Microsoft Dynamics AX Enum: NVMPUtilEntryLevelId unloaded
; --------------------------------------------------------------------------------
USERTYPEVERSION 6
USERTYPE #NVMPUtilEntryLevelId
ENUM
PROPERTIES
Name #NVMPUtilEntryLevelId
EnumType #UtilEntryLevel
ENDPROPERTIES
TYPEELEMENTS
ENDTYPEELEMENTS
TYPEREFERENCES
ENDTYPEREFERENCES
ENDUSERTYPE
***Element: UTE
; Microsoft Dynamics AX Enum: NVMPSourceUtilEntryLevelId unloaded
; --------------------------------------------------------------------------------
USERTYPEVERSION 6
USERTYPE #NVMPSourceUtilEntryLevelId
ENUM
PROPERTIES
Name #NVMPSourceUtilEntryLevelId
Label #Source Layer
HelpText #Source layer of an AOT object
EnumType #UtilEntryLevel
ENDPROPERTIES
TYPEELEMENTS
ENDTYPEELEMENTS
TYPEREFERENCES
ENDTYPEREFERENCES
ENDUSERTYPE
***Element: UTE
; Microsoft Dynamics AX Enum: NVMPDestinationUtilEntryLevelId unloaded
; --------------------------------------------------------------------------------
USERTYPEVERSION 6
USERTYPE #NVMPDestinationUtilEntryLevelId
ENUM
PROPERTIES
Name #NVMPDestinationUtilEntryLevelId
Label #Destination Layer
HelpText #Destination layer of an AOT object
EnumType #UtilEntryLevel
ENDPROPERTIES
TYPEELEMENTS
ENDTYPEELEMENTS
TYPEREFERENCES
ENDTYPEREFERENCES
ENDUSERTYPE
***Element: UTS
; Microsoft Dynamics AX String: NVMPIdentifierName unloaded
; --------------------------------------------------------------------------------
USERTYPEVERSION 6
USERTYPE #NVMPIdentifierName
STRING
PROPERTIES
Name #NVMPIdentifierName
Extends #identifiername
StringSize #40
ENDPROPERTIES
TYPEELEMENTS
ENDTYPEELEMENTS
TYPEREFERENCES
ENDTYPEREFERENCES
ENDUSERTYPE
***Element: UTI
; Microsoft Dynamics AX Integer: NVMPTableId unloaded
; --------------------------------------------------------------------------------
USERTYPEVERSION 6
USERTYPE #NVMPTableId
INT
PROPERTIES
Name #NVMPTableId
Extends #tableId
ENDPROPERTIES
TYPEELEMENTS
ENDTYPEELEMENTS
TYPEREFERENCES
ENDTYPEREFERENCES
ENDUSERTYPE
***Element: UTI
; Microsoft Dynamics AX Integer: NVMPFieldId unloaded
; --------------------------------------------------------------------------------
USERTYPEVERSION 6
USERTYPE #NVMPFieldId
INT
PROPERTIES
Name #NVMPFieldId
Extends #fieldId
ENDPROPERTIES
TYPEELEMENTS
ENDTYPEELEMENTS
TYPEREFERENCES
ENDTYPEREFERENCES
ENDUSERTYPE
***Element: DBE
; Microsoft Dynamics AX Enumtype : NVMPPrePostLayerMove unloaded
; --------------------------------------------------------------------------------
ENUMTYPEVERSION 1
ENUMTYPE #NVMPPrePostLayerMove
PROPERTIES
Name #NVMPPrePostLayerMove
Label #Pre / Post Layer Move
Help #Before or after an object move from one layer to another
UseEnumValue #Yes
ENDPROPERTIES
TYPEELEMENTS
#Pre
PROPERTIES
Name #Pre
Label #Pre
EnumValue #0
ENDPROPERTIES
#Post
PROPERTIES
Name #Post
Label #@SYS41360
EnumValue #1
ENDPROPERTIES
ENDTYPEELEMENTS
ENDENUMTYPE
nl
Post
@SYS41360
0
0
***Element: MCR
; Microsoft Dynamics AX Macro: NVMPTableLayerMoveWizardSteps unloaded
; --------------------------------------------------------------------------------
JOBVERSION 1
SOURCE #NVMPTableLayerMoveWizardSteps
##Define.Welcome (1)
##Define.Parameters (2)
##Define.TableNames (3)
##Define.DictionaryChanges (4)
##Define.Finish (5)
ENDSOURCE
***Element: CLS
; Microsoft Dynamics AX Class: NVMPTableLayerMoveWizard unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
CLASS #NVMPTableLayerMoveWizard
PROPERTIES
Name #NVMPTableLayerMoveWizard
Extends #SysWizard
RunOn #Client
ENDPROPERTIES
METHODS
Version: 3
SOURCE #accessMenuFunction
#public MenuFunction accessMenuFunction()
#{
# return new MenuFunction(menuitemdisplaystr(NVMPTableLayerMoveWizard),MenuItemType::Display);
#}
ENDSOURCE
SOURCE #buildTableListFromExistingChangesData
#private void buildTableListFromExistingChangesData()
#{
# NVMPSqlDictionaryIdChanges dictionaryChanges;
# ;
# // Here we start from the existing data in the NVMPSqlDictionaryIdChanges table
# while select Name
# from dictionaryChanges
# group by Name // Select distinct on table name
# where dictionaryChanges.OldFieldId == 0 // 0 indicates that is a table and not a field
# {
# mTmpTableName.clear();
# mTmpTableName.TableName = dictionaryChanges.Name;
# mTmpTableName.insert();
# }
#}
ENDSOURCE
SOURCE #classDeclaration
#public class NVMPTableLayerMoveWizard extends SysWizard
#{
# NVMPPrePostLayerMove mPrePostLayerMove;
# NVMPSourceUtilEntryLevelId mSourceLayer;
# NVMPDestinationUtilEntryLevelId mDestinationLayer;
#
# TmpTableName mTmpTableName;
# NVMPSqlDictionaryIdChanges mSQLDictionaryIdChanges;
#
# #NVMPTableLayerMoveWizardSteps
#}
#
ENDSOURCE
SOURCE #clearPreviousData
#private void clearPreviousData()
#{
# NVMPITableMoveAction theAction = NVMPTableMoveAction_ClearPreviousData::construct();
# ;
# theAction.run();
#}
ENDSOURCE
SOURCE #formName
#FormName formName()
#{
# return formstr(NVMPTableLayerMoveWizard);
#}
#
ENDSOURCE
SOURCE #parmDestinationLayer
#public NVMPDestinationUtilEntryLevelId parmDestinationLayer(NVMPDestinationUtilEntryLevelId _destinationLayer = mDestinationLayer)
#{
# ;
# mDestinationLayer = _destinationLayer;
# return mDestinationLayer;
#}
#
ENDSOURCE
SOURCE #parmPrePostLayerMove
#public NVMPPrePostLayerMove parmPrePostLayerMove(NVMPPrePostLayerMove _prePostLayerMove = mPrePostLayerMove)
#{
# ;
# mPrePostLayerMove = _prePostLayerMove;
# return mPrePostLayerMove;
#}
#
ENDSOURCE
SOURCE #parmSourceLayer
#public NVMPSourceUtilEntryLevelId parmSourceLayer(NVMPSourceUtilEntryLevelId _sourceLayer = mSourceLayer)
#{
# ;
# mSourceLayer = _sourceLayer;
# return mSourceLayer;
#}
#
ENDSOURCE
SOURCE #parmSQLDictionaryIdChanges
#public NVMPSqlDictionaryIdChanges parmSQLDictionaryIdChanges(NVMPSqlDictionaryIdChanges _sqlDictionaryIdChanges = mSQLDictionaryIdChanges)
#{
# ;
# mSQLDictionaryIdChanges = _sqlDictionaryIdChanges;
# return mSQLDictionaryIdChanges;
#}
#
ENDSOURCE
SOURCE #parmTmpTableName
#public TmpTableName parmTmpTableName(TmpTableName _tmpTableName = mTmpTableName)
#{
# ;
# mTmpTableName = _tmpTableName;
# return mTmpTableName;
#}
#
ENDSOURCE
SOURCE #processTablesDictionaryData
#///
#/// Gathers dictionary data of the tables / fields that are moved from layer and logs it into a dictionary changes table
#///
#///
#/// Depending of the moment (pre or post layer move) the oldTableId / oldFieldId fields or the newTableId / newFieldId fields are filled
#///
#public void processTablesDictionaryData()
#{
# // Create object once
# NVMPITableMoveAction theAction;
# ;
#
# switch(this.parmPrePostLayerMove())
# {
# case NVMPPrePostLayerMove::Pre:
#
# // Only erase data when starting a layer move, not after because then we need to keep the old id's
# // Before processing the tables, clear data from previous runs
# NVMPTableMoveAction_ClearPreviousData::construct().run();
#
# // Process the tables specified in the wizard
# while select mTmpTableName
# {
# theAction = NVMPTableMoveAction_CollectIdsPreMove::newFromTableMoveWizard(this.parmSourceLayer(), mTmpTableName.TableName);
# theAction.run();
# }
#
# break;
#
# case NVMPPrePostLayerMove::Post:
#
# // Build a table list starting from the changes data from the pre-layermove run
# this.buildTableListFromExistingChangesData();
#
# // Process the tables found
# while select mTmpTableName
# {
# theAction = NVMPTableMoveAction_CollectIdsPostMove::newFromTableMoveWizard(this.parmDestinationLayer(), mTmpTableName.TableName);
# theAction.run();
# }
#
# break;
# }
#}
ENDSOURCE
SOURCE #renameSqlLongTableNames
#///
#/// Check the length of table names and renames the tables in the SQL backend
#/// This is needed because long tables names contain the table id when shortened
#/// and when the table is moved from layer, then we need to rename the table
#/// to contain the new tableid so that the synchronisation will see the table in SQL
#///
#public void renameSqlLongTableNames()
#{
# NVMPITableMoveAction theAction = NVMPTableMoveAction_RenameSQLTableNames::construct();
# ;
# theAction.run();
#}
#
ENDSOURCE
SOURCE #run
#void run()
#{
#
#}
#
ENDSOURCE
SOURCE #setupNavigation
#/*
#Use this method to setup the two arrays: nextEnabled[] and backEnabled[]
#Call this.nextEnabled(boolean) and this.backEnabled(boolean) to enable/disable the buttons runtime.
#*/
#void setupNavigation()
#{
# ;
# nextEnabled[#Welcome] = true;
# backEnabled[#Welcome] = false;
# finishEnabled[#Welcome] = false;
#}
#
ENDSOURCE
SOURCE #skipTab
#public boolean skipTab(int _idx, boolean _skip)
#{
# boolean ret;
#
# ret = super(_idx, _skip);
#
# return ret;
#}
ENDSOURCE
SOURCE #updateSqlDictionaryWithNewIds
#public void updateSqlDictionaryWithNewIds()
#{
# NVMPITableMoveAction theAction = NVMPTableMoveAction_UpdateSqlDictionary::construct();
# ;
# theAction.run();
#}
ENDSOURCE
SOURCE #validate
#boolean validate()
#{
# return true;
#}
#
ENDSOURCE
SOURCE #construct
#public static NVMPTableLayerMoveWizard construct()
#{
# NVMPTableLayerMoveWizard NVMPTableLayerMoveWizard = new NVMPTableLayerMoveWizard();
# ;
#
# return NVMPTableLayerMoveWizard;
#}
ENDSOURCE
SOURCE #main
#static void main(args args)
#{
# NVMPTableLayerMoveWizard wizard = new NVMPTableLayerMoveWizard();
# ;
#
# if (wizard.prompt())
# wizard.run();
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: CLS
; Microsoft Dynamics AX Class: NVMPITableMoveAction unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
INTERFACE #NVMPITableMoveAction
PROPERTIES
Name #NVMPITableMoveAction
Extends #
RunOn #Server
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#interface NVMPITableMoveAction
#{
#}
ENDSOURCE
SOURCE #run
#public void run()
#{
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: CLS
; Microsoft Dynamics AX Class: NVMPTableMoveAction_ClearPreviousData unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
CLASS #NVMPTableMoveAction_ClearPreviousData
PROPERTIES
Name #NVMPTableMoveAction_ClearPreviousData
Extends #
RunOn #Called from
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#class NVMPTableMoveAction_ClearPreviousData implements NVMPITableMoveAction
#{
#}
ENDSOURCE
SOURCE #new
#protected void new()
#{
#}
ENDSOURCE
SOURCE #run
#public void run()
#{
# ;
# // When the wizard is initiated, clear the data of previous runs
# NVMPSqlDictionaryIdChanges::clearData();
#}
ENDSOURCE
SOURCE #construct
#public static NVMPTableMoveAction_ClearPreviousData construct()
#{
# return new NVMPTableMoveAction_ClearPreviousData();
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: CLS
; Microsoft Dynamics AX Class: NVMPTableMoveAction_CollectIds unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
CLASS #NVMPTableMoveAction_CollectIds
PROPERTIES
Name #NVMPTableMoveAction_CollectIds
Extends #
RunOn #Server
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#abstract class NVMPTableMoveAction_CollectIds implements NVMPITableMoveAction
#{
# NVMPSourceUtilEntryLevelId mLayerId;
# TableName mTableName;
#
# #Define.SystemFieldsRangeMin(61000)
#}
ENDSOURCE
SOURCE #collectFieldData
#protected void collectFieldData()
#{
# throw error(Error::missingOverride(funcName()));
#}
ENDSOURCE
SOURCE #collectTableData
#protected void collectTableData()
#{
# throw error(Error::missingOverride(funcName()));
#}
ENDSOURCE
SOURCE #parmLayerId
#public NVMPSourceUtilEntryLevelId parmLayerId(NVMPSourceUtilEntryLevelId _layerId = mLayerId)
#{
# ;
# mLayerId = _layerId;
# return mLayerId;
#}
ENDSOURCE
SOURCE #parmTableName
#public TableName parmTableName(TableName _tableName = mTableName)
#{
# ;
# mTableName = _tableName;
# return mTableName;
#}
#
ENDSOURCE
SOURCE #run
#public void run()
#{
# DictTable dictTable = new DictTable(tableName2Id(this.parmTableName()));
# boolean tmpTable = false;
# ;
#
# // Check if the table is temporary (then data content is not applicable)
# if(dictTable)
# {
# if(!dictTable.isTmp())
# {
# this.collectTableData();
# this.collectFieldData();
# }
# }
#}
ENDSOURCE
SOURCE #validateTableLayerPresence
#protected void validateTableLayerPresence()
#{
# UtilElements utilElements;
# ;
# // First check if the table is actually in the layer
# select firstonly utilElements
# where utilElements.recordType == UtilElementType::Table
# && utilElements.utilLevel == this.parmLayerId()
# && utilElements.name == this.parmTableName();
#
# // TODO KeSae : label !
# if(!utilElements.RecId)
# throw error(strFmt('Table %1 does not exist in layer %2', this.parmTableName(), this.parmLayerId()));
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: CLS
; Microsoft Dynamics AX Class: NVMPTableMoveAction_CollectIdsPreMove unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
CLASS #NVMPTableMoveAction_CollectIdsPreMove
PROPERTIES
Name #NVMPTableMoveAction_CollectIdsPreMove
Extends #NVMPTableMoveAction_CollectIds
RunOn #Server
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#class NVMPTableMoveAction_CollectIdsPreMove extends NVMPTableMoveAction_CollectIds
#{
#}
ENDSOURCE
SOURCE #collectFieldData
#protected void collectFieldData()
#{
# UtilElements utilElements;
# SQLDictionary sqlDictionary;
# TableId tableId = TableName2Id(this.parmTableName());
# ;
#
# // Select all the field of this table that reside in that layer
# while select utilElements
# where utilElements.recordType == UtilElementType::TableField
# && utilElements.utilLevel == this.parmLayerId()
# && utilElements.parentId == TableName2Id(this.parmTableName()) // Find with the current table id
# {
# NVMPSqlDictionaryIdChanges::logChangeRecord(utilElements.name, tableId, 0, FieldName2Id(tableId, utilElements.name), 0);
# }
#
# // Also process the system fields (located in the rage > 60000)
# while select sqlDictionary
# where sqlDictionary.tabId == tableId
# && sqlDictionary.fieldId >= #SystemFieldsRangeMin
# {
# NVMPSqlDictionaryIdChanges::logChangeRecord(sqlDictionary.name, tableId, 0, FieldName2Id(tableId, sqlDictionary.name), 0);
# }
#}
ENDSOURCE
SOURCE #collectTableData
#protected void collectTableData()
#{
# ;
# this.validateTableLayerPresence();
#
# NVMPSqlDictionaryIdChanges::logChangeRecord(this.parmTableName(), TableName2Id(this.parmTableName()), 0, 0, 0);
#}
ENDSOURCE
SOURCE #construct
#private static NVMPTableMoveAction_CollectIdsPreMove construct()
#{
# return new NVMPTableMoveAction_CollectIdsPreMove();
#}
ENDSOURCE
SOURCE #newFromTableMoveWizard
#public static NVMPTableMoveAction_CollectIdsPreMove newFromTableMoveWizard( NVMPSourceUtilEntryLevelId _layerId
# , TableName _tableName)
#{
# NVMPTableMoveAction_CollectIdsPreMove NVMPTableMoveAction_CollectIdsPreMove = new NVMPTableMoveAction_CollectIdsPreMove();
# ;
#
# NVMPTableMoveAction_CollectIdsPreMove.parmLayerId(_layerId);
# NVMPTableMoveAction_CollectIdsPreMove.parmTableName(_tableName);
#
# return NVMPTableMoveAction_CollectIdsPreMove;
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: CLS
; Microsoft Dynamics AX Class: NVMPTableMoveAction_CollectIdsPostMove unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
CLASS #NVMPTableMoveAction_CollectIdsPostMove
PROPERTIES
Name #NVMPTableMoveAction_CollectIdsPostMove
Extends #NVMPTableMoveAction_CollectIds
RunOn #Server
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#class NVMPTableMoveAction_CollectIdsPostMove extends NVMPTableMoveAction_CollectIds
#{
#}
ENDSOURCE
SOURCE #collectFieldData
#protected void collectFieldData()
#{
# UtilElements utilElements;
# SQLDictionary sqlDictionary;
# NVMPSqlDictionaryIdChanges theOldChangesRecord;
#
# TableId tableId = TableName2Id(this.parmTableName());
# ;
#
# theOldChangesRecord = NVMPSqlDictionaryIdChanges::findTableRecordByName(this.parmTableName(), true);
#
# // Select all the field of this table that reside in that layer
# while select utilElements
# where utilElements.recordType == UtilElementType::TableField
# && utilElements.utilLevel == this.parmLayerId()
# && utilElements.parentId == tableId // Find with the current table id
# {
# NVMPSqlDictionaryIdChanges::updateFieldRecordNewIdData(theOldChangesRecord.OldTableId, utilElements.name, tableId, fieldName2Id(tableId, utilElements.name));
# }
#
# // Also process the system fields (located in the rage > 60000)
# while select sqlDictionary
# where sqlDictionary.tabId == theOldChangesRecord.OldTableId
# && sqlDictionary.fieldId >= #SystemFieldsRangeMin
# {
# NVMPSqlDictionaryIdChanges::updateFieldRecordNewIdData(theOldChangesRecord.OldTableId, sqlDictionary.name, tableId, fieldName2Id(tableId, sqlDictionary.name));
# }
#}
ENDSOURCE
SOURCE #collectTableData
#protected void collectTableData()
#{
# NVMPSqlDictionaryIdChanges theOldRecord;
# ;
#
# ttsBegin;
#
# // After moving, first look with the name of the table to find the old record logged before the layer move
# theOldRecord = NVMPSqlDictionaryIdChanges::findTableRecordByName(this.parmTableName(), true);
#
# if(theOldRecord.RecId)
# {
# theOldRecord.NewTableId = TableName2Id(this.parmTableName());
# theOldRecord.doUpdate();
# }
# else
# {
# //TODO KeSae : Label!
# throw error(strFmt("Table %1 not found in the pending dictionary changes table. Did you include it before the layer move?"));
# }
#
# ttsCommit;
#
#}
ENDSOURCE
SOURCE #construct
#private static NVMPTableMoveAction_CollectIdsPostMove construct()
#{
# return new NVMPTableMoveAction_CollectIdsPostMove();
#}
ENDSOURCE
SOURCE #newFromTableMoveWizard
#public static NVMPTableMoveAction_CollectIdsPostMove newFromTableMoveWizard(NVMPSourceUtilEntryLevelId _layerId
# , TableName _tableName)
#{
# NVMPTableMoveAction_CollectIdsPostMove NVMPTableMoveAction_CollectIdsPostMove = new NVMPTableMoveAction_CollectIdsPostMove();
# ;
#
# NVMPTableMoveAction_CollectIdsPostMove.parmLayerId(_layerId);
# NVMPTableMoveAction_CollectIdsPostMove.parmTableName(_tableName);
#
# return NVMPTableMoveAction_CollectIdsPostMove;
#}
#
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: CLS
; Microsoft Dynamics AX Class: NVMPTableMoveAction_RenameSQLTableNames unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
CLASS #NVMPTableMoveAction_RenameSQLTableNames
PROPERTIES
Name #NVMPTableMoveAction_RenameSQLTableNames
Extends #
RunOn #Server
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#class NVMPTableMoveAction_RenameSQLTableNames implements NVMPITableMoveAction
#{
#}
ENDSOURCE
SOURCE #renameSqlLongTableNames
#///
#/// Check the length of table names and renames the tables in the SQL backend
#/// This is needed because long tables names contain the table id when shortened
#/// and when the table is moved from layer, then we need to rename the table
#/// to contain the new tableid so that the synchronisation will see the table in SQL
#///
#private void renameSqlLongTableNames()
#{
# NVMPSqlDictionaryIdChanges dictionaryChanges;
# SqlDictionary sqlDictionary;
# str 50 newSqlTableName;
# str 50 oldSqlTableName;
# str sqlUpdateStr;
#
# void executeStatement()
# {
# Connection connection;
# Statement statement;
# int updatedRows;
# ;
#
# // create connection object
# connection = new Connection();
#
# // create statement
# statement = connection.createStatement();
#
# // assert SQL statement execute permission
# new SqlStatementExecutePermission(sqlUpdateStr).assert();
#
# // run the statement
# updatedRows = statement.executeUpdate(sqlUpdateStr);
#
# // Revert the permission assert
# CodeAccessPermission::revertAssert();
# }
# ;
#
# try
# {
# ttsBegin;
#
# // Loop every changed table
# while select dictionaryChanges
# where dictionaryChanges.OldFieldId == 0
# && dictionaryChanges.NewFieldId == 0
# {
# if(strLen(dictionaryChanges.Name) > 30)
# {
# oldSqlTableName = substr(dictionaryChanges.Name, 1, 25) + int2str(dictionaryChanges.OldTableId);
# newSqlTableName = substr(dictionaryChanges.Name, 1, 25) + int2str(dictionaryChanges.NewTableId);
#
# sqlUpdateStr = strFmt('EXEC sp_rename \'%1\', \'%2\';', oldSqlTableName, newSqlTableName);
#
# executeStatement();
#
# // Also rename the table name in the SYSSqlDictionary table otherwise the kernel will issue a create table statement
# update_recordset sqlDictionary
# setting sqlName = newSqlTableName
# where sqlDictionary.sqlName == oldSqlTableName
# && sqlDictionary.fieldId == 0;
# }
# }
#
# ttsCommit;
# }
# catch
# {
# ttsAbort;
#
# //TODO KeSae : Label
# throw error(strFmt('Table %1 could not be renamed to %2', oldSqlTableName, newSqlTableName));
# }
#}
#
ENDSOURCE
SOURCE #run
#public void run()
#{
# ;
# this.renameSqlLongTableNames();
#}
ENDSOURCE
SOURCE #construct
#public static NVMPTableMoveAction_RenameSQLTableNames construct()
#{
# return new NVMPTableMoveAction_RenameSQLTableNames();
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: CLS
; Microsoft Dynamics AX Class: NVMPTableMoveAction_UpdateSqlDictionary unloaded
; --------------------------------------------------------------------------------
CLSVERSION 1
CLASS #NVMPTableMoveAction_UpdateSqlDictionary
PROPERTIES
Name #NVMPTableMoveAction_UpdateSqlDictionary
Extends #
RunOn #Called from
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#class NVMPTableMoveAction_UpdateSqlDictionary implements NVMPITableMoveAction
#{
#}
ENDSOURCE
SOURCE #run
#///
#/// Updates the SQL Dictionary with the new object id's found in the NVMPSqlDictionaryIdChanges table
#///
#public void run()
#{
# SQLDictionary sqlDictionary;
# NVMPSqlDictionaryIdChanges dictionaryChanges;
# DictTable dictTable;
# int i = 0;
# ;
#
# ttsBegin;
#
# // Loop every changed table / field id
# while select dictionaryChanges
# {
# dictTable = new DictTable(dictionaryChanges.NewTableId);
#
# if(dictTable && !dictTable.isTmp())
# {
# ttsBegin;
#
# // Fetch the sqlDictionary data
# select firstonly forupdate sqlDictionary
# where sqlDictionary.tabId == dictionaryChanges.OldTableId
# && sqlDictionary.fieldId == dictionaryChanges.OldFieldId;
#
# if(sqlDictionary.RecId)
# {
# // Fill in the newly created id's
# sqlDictionary.tabId = dictionaryChanges.NewTableId;
# sqlDictionary.fieldId = dictionaryChanges.NewFieldId;
# sqlDictionary.doUpdate();
# }
#
# ttsCommit;
# }
# }
#
# ttsCommit;
#}
ENDSOURCE
SOURCE #construct
#public static NVMPTableMoveAction_UpdateSqlDictionary construct()
#{
# return new NVMPTableMoveAction_UpdateSqlDictionary();
#}
ENDSOURCE
ENDMETHODS
ENDCLASS
***Element: FRM
; Microsoft Dynamics AX Forms unloaded
; --------------------------------------------------------------------------------
FRMVERSION 5
FORM #NVMPTableLayerMoveWizard
PROPERTIES
Name #NVMPTableLayerMoveWizard
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#class FormRun extends ObjectRun
#{
# NVMPTableLayerMoveWizard sysWizard;
#
# boolean skipTabChangeMethod;
#
# #NVMPTableLayerMoveWizardSteps
#}
#
ENDSOURCE
SOURCE #tabChange
#void tabChange(int _FromTab)
#{
# ;
# switch(_fromTab)
# {
# case #Parameters:
# // Pass the parameter fields to the wizard class
# element.wizard().parmPrePostLayerMove (PrePostLayerMove.selection());
# element.wizard().parmSourceLayer (SourceLayer.selection());
# element.wizard().parmDestinationLayer (DestinationLayer.selection());
#
# // If the wizard is used to gather id's after the layer move
# // Then call the processing after the parameters
# if(element.wizard().parmPrePostLayerMove() == NVMPPrePostLayerMove::Post)
# {
# element.wizard().processTablesDictionaryData();
# }
#
# break;
#
# case #TableNames:
# // Pass the table names to the wizard class
# element.wizard().parmTmpTableName(TmpTableName);
#
# // Let the wizard process the data for the entered tables (Gather tableId's and fieldId's)
# element.wizard().processTablesDictionaryData();
#
# break;
#
# case #DictionaryChanges:
#
# // When after the layer move and leaving the dictionary change results
# if(element.wizard().parmPrePostLayerMove() == NVMPPrePostLayerMove::Post)
# {
# // Update the sql dictionary
# element.wizard().updateSqlDictionaryWithNewIds();
#
# // Rename long tablenames in sql
# element.wizard().renameSqlLongTableNames();
# }
#
# break;
# }
#
# // After the processing, execute the query on the NVMPSqlDictionaryIdChanges_DS to see the current data
# NVMPSqlDictionaryIdChanges_DS.executeQuery();
#}
ENDSOURCE
SOURCE #run
#void run()
#{
# element.setTexts();
#
# super();
#}
#
ENDSOURCE
SOURCE #setTexts
#void setTexts()
#{
# ;
# WizardInfoText.height(50);
# WizardInfoText.text('Use this wizard to update the SQL Dictionary information\nafter moving a table from one layer to another');
#}
#
ENDSOURCE
SOURCE #init
#void init()
#{
# ;
# super();
#
# if (element.Args().caller())
# {
# sysWizard = element.Args().caller();
# }
# else
# {
# NVMPTableLayerMoveWizard::main(new args());
# element.closeCancel();
# }
#}
#
ENDSOURCE
SOURCE #wizard
#NVMPTableLayerMoveWizard wizard()
#{
# return sysWizard;
#}
#
ENDSOURCE
SOURCE #tab
#FormTabControl tab()
#{
# return tab;
#}
#
ENDSOURCE
ENDMETHODS
OBJECTBANK
PROPERTIES
ENDPROPERTIES
DATASOURCE
OBJECTPOOL
PROPERTIES
Name #TmpTableName
Table #TmpTableName
ENDPROPERTIES
FIELDLIST
ENDFIELDLIST
ENDOBJECTPOOL
METHODS
Version: 3
SOURCE #executeQuery
#public void executeQuery()
#{
# ;
# // If the wizard already contains tables passed to it, show them
# if(sysWizard.parmTmpTableName().RecId)
# {
# TmpTableName.setTmpData(sysWizard.parmTmpTableName());
# }
#
# super();
#}
ENDSOURCE
SOURCE #init
#public void init()
#{
# ;
# super();
#}
ENDSOURCE
ENDMETHODS
ENDDATASOURCE
DATASOURCE
OBJECTPOOL
PROPERTIES
Name #NVMPSqlDictionaryIdChanges
Table #NVMPSqlDictionaryIdChanges
ENDPROPERTIES
FIELDLIST
ENDFIELDLIST
ENDOBJECTPOOL
ENDDATASOURCE
ENDOBJECTBANK
JOINS
ENDJOINS
DESIGN
PROPERTIES
Caption #SQL Dictionary Update Wizard
ENDPROPERTIES
CONTAINER
CONTROL TAB
PROPERTIES
Name #Tab
AutoDeclaration #Yes
Width #Column width
Columns #1
ENDPROPERTIES
METHODS
Version: 3
SOURCE #tabChanged
#public void tabChanged(int _FromTab, int _ToTab)
#{
# super(_FromTab, _ToTab);
#
# // TODO KeSae : use tabchanged instead of tabchange
#}
ENDSOURCE
SOURCE #tabChange
#public boolean tabChange(int _FromTab)
#{
# boolean ret;
# ;
#
# ret = super(_FromTab);
#
# element.tabChange(_FromTab);
#
# return ret;
#}
ENDSOURCE
ENDMETHODS
CONTAINER
CONTROL TABPAGE
PROPERTIES
Name #WelcomeTab
Width #Column width
Height #Column height
Caption #SQL Dictionary update after layer move
ENDPROPERTIES
CONTAINER
CONTROL STATICTEXT
PROPERTIES
Name #WizardInfoText
AutoDeclaration #Yes
ENDPROPERTIES
ENDCONTROL
ENDCONTAINER
ENDCONTROL
CONTROL TABPAGE
PROPERTIES
Name #ParameterTab
Width #Column width
Height #Column height
HelpText #Specify move information
Caption #Layer move parameters
ENDPROPERTIES
CONTAINER
CONTROL COMBOBOX
PROPERTIES
Name #PrePostLayerMove
AutoDeclaration #Yes
EnumType #NVMPPrePostLayerMove
ENDPROPERTIES
METHODS
Version: 3
SOURCE #modified
#public boolean modified()
#{
# boolean ret = super();
# ;
#
# if(PrePostLayerMove.selection() == NVMPPrePostLayerMove::Post)
# {
# element.wizard().skipTab(#TableNames, true);
# }
# else
# {
# element.wizard().skipTab(#TableNames, false);
# }
#
# return ret;
#}
ENDSOURCE
ENDMETHODS
ENDCONTROL
CONTROL COMBOBOX
PROPERTIES
Name #SourceLayer
AutoDeclaration #Yes
ExtendedDataType
ARRAY
#NVMPSourceUtilEntryLevelId
#
ENDARRAY
ENDPROPERTIES
ENDCONTROL
CONTROL COMBOBOX
PROPERTIES
Name #DestinationLayer
AutoDeclaration #Yes
ExtendedDataType
ARRAY
#NVMPDestinationUtilEntryLevelId
#
ENDARRAY
ENDPROPERTIES
ENDCONTROL
ENDCONTAINER
ENDCONTROL
CONTROL TABPAGE
PROPERTIES
Name #SourceTablesTab
Width #Column width
Height #Column height
HelpText #Specify the tables that have changed dictionary id's
Caption #Select tables
ENDPROPERTIES
CONTAINER
CONTROL GRID
PROPERTIES
Name #SourceTableGrid
Width #Column width
Height #Column height
DataSource #TmpTableName
ENDPROPERTIES
CONTAINER
CONTROL STRINGEDIT
PROPERTIES
Name #TmpTableName_TableName
DataSource #TmpTableName
DataField #TableName
ENDPROPERTIES
ENDCONTROL
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDCONTROL
CONTROL TABPAGE
PROPERTIES
Name #DictionaryChangesTable
Width #Column width
Height #Column height
HelpText #Table and field Id's collected from the selected tables
Caption #Pending dictionary change results
ENDPROPERTIES
CONTAINER
CONTROL GRID
PROPERTIES
Name #DictionaryChanges
Width #Column width
Height #Column height
DataSource #NVMPSqlDictionaryIdChanges
DataGroup #Overview
ENDPROPERTIES
CONTAINER
CONTROL INTEDIT
PROPERTIES
Name #DictionaryChanges_OldTableId
DataSource #NVMPSqlDictionaryIdChanges
DataField #OldTableId
ENDPROPERTIES
ENDCONTROL
CONTROL INTEDIT
PROPERTIES
Name #DictionaryChanges_OldFieldId
DataSource #NVMPSqlDictionaryIdChanges
DataField #OldFieldId
ENDPROPERTIES
ENDCONTROL
CONTROL STRINGEDIT
PROPERTIES
Name #DictionaryChanges_Name
DataSource #NVMPSqlDictionaryIdChanges
DataField #Name
ENDPROPERTIES
ENDCONTROL
CONTROL INTEDIT
PROPERTIES
Name #DictionaryChanges_NewFieldId
DataSource #NVMPSqlDictionaryIdChanges
DataField #NewFieldId
ENDPROPERTIES
ENDCONTROL
CONTROL INTEDIT
PROPERTIES
Name #DictionaryChanges_NewTableId
DataSource #NVMPSqlDictionaryIdChanges
DataField #NewTableId
ENDPROPERTIES
ENDCONTROL
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDCONTROL
CONTROL TABPAGE
PROPERTIES
Name #Finish
Caption #Finish
ENDPROPERTIES
CONTAINER
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDDESIGN
ENDFORM
***Element: FRM
; Microsoft Dynamics AX Forms unloaded
; --------------------------------------------------------------------------------
FRMVERSION 5
FORM #NVMPSqlDictionaryIdChanges
PROPERTIES
Name #NVMPSqlDictionaryIdChanges
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#public class FormRun extends ObjectRun
#{
#}
ENDSOURCE
ENDMETHODS
OBJECTBANK
PROPERTIES
ENDPROPERTIES
DATASOURCE
OBJECTPOOL
PROPERTIES
Name #NVMPTmpSqlDictionaryIdChanges
Table #NVMPSqlDictionaryIdChanges
InsertIfEmpty #No
ENDPROPERTIES
FIELDLIST
ENDFIELDLIST
ENDOBJECTPOOL
ENDDATASOURCE
ENDOBJECTBANK
JOINS
ENDJOINS
DESIGN
PROPERTIES
Caption #@HEL287
TitleDatasource #NVMPTmpSqlDictionaryIdChanges
ENDPROPERTIES
CONTAINER
CONTROL TAB
PROPERTIES
Name #Tab
Width #Column width
Height #Column height
ENDPROPERTIES
CONTAINER
CONTROL TABPAGE
PROPERTIES
Name #Overview
Caption #@SYS9039
ENDPROPERTIES
CONTAINER
CONTROL GRID
PROPERTIES
Name #Grid
Width #Column width
Height #Column height
DataSource #NVMPTmpSqlDictionaryIdChanges
DataGroup #Overview
AutoDataGroup #Yes
ENDPROPERTIES
CONTAINER
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDCONTROL
CONTROL TABPAGE
PROPERTIES
Name #General
Caption #@SYS19924
ENDPROPERTIES
CONTAINER
CONTROL GROUP
PROPERTIES
Name #Identification
DataSource #NVMPTmpSqlDictionaryIdChanges
DataGroup #Identification
AutoDataGroup #Yes
ENDPROPERTIES
CONTAINER
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDCONTROL
ENDCONTAINER
ENDDESIGN
ENDFORM
nl
Overzicht
@SYS9039
0
0
nl
Algemeen
@SYS19924
0
0
***Element: FTM
; Microsoft Dynamics AX MENUITEM : NVMPTableLayerMoveWizard unloaded
; --------------------------------------------------------------------------------
VERSION 1
MENUITEM #NVMPTableLayerMoveWizard
Type: 1
PROPERTIES
Name #NVMPTableLayerMoveWizard
ObjectType #Class
Object #NVMPTableLayerMoveWizard
ENDPROPERTIES
ENDMENUITEM
***Element: FTM
; Microsoft Dynamics AX MENUITEM : NVMPSqlDictionaryIdChanges unloaded
; --------------------------------------------------------------------------------
VERSION 1
MENUITEM #NVMPSqlDictionaryIdChanges
Type: 1
PROPERTIES
Name #NVMPSqlDictionaryIdChanges
Label #@HEL287
Object #NVMPSqlDictionaryIdChanges
ENDPROPERTIES
ENDMENUITEM
***Element: PRN
; Microsoft Dynamics AX Project : KeSae_TableMove unloaded
; --------------------------------------------------------------------------------
PROJECTVERSION 2
PROJECT #KeSae_TableMove
SHARED
PROPERTIES
Name #KeSae_TableMove
ENDPROPERTIES
PROJECTCLASS ProjectNode
GROUP #DataDictionary
PROPERTIES
Name #DataDictionary
ProjectGroupType #DataDictionary
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
GROUP #Tables
PROPERTIES
Name #Tables
ProjectGroupType #Tables
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
BEGINNODE
FILETYPE 0
UTILTYPE 44
UTILOBJECTID 30031
NODETYPE 204
NAME #NVMPSqlDictionaryIdChanges
ENDNODE
ENDGROUP
GROUP #ExtendedDataTypes
PROPERTIES
Name #ExtendedDataTypes
ProjectGroupType #ExtendedDataTypes
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
BEGINNODE
FILETYPE 0
UTILTYPE 41
UTILOBJECTID 30186
NODETYPE 228
NAME #NVMPUtilEntryLevelId
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 41
UTILOBJECTID 30184
NODETYPE 228
NAME #NVMPSourceUtilEntryLevelId
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 41
UTILOBJECTID 30181
NODETYPE 228
NAME #NVMPDestinationUtilEntryLevelId
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 41
UTILOBJECTID 30183
NODETYPE 234
NAME #NVMPIdentifierName
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 41
UTILOBJECTID 30185
NODETYPE 232
NAME #NVMPTableId
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 41
UTILOBJECTID 30182
NODETYPE 232
NAME #NVMPFieldId
ENDNODE
ENDGROUP
GROUP #BaseEnums
PROPERTIES
Name #BaseEnums
ProjectGroupType #BaseEnums
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
BEGINNODE
FILETYPE 0
UTILTYPE 40
UTILOBJECTID 30031
NODETYPE 209
NAME #NVMPPrePostLayerMove
ENDNODE
ENDGROUP
ENDGROUP
GROUP #Macros
PROPERTIES
Name #Macros
ProjectGroupType #Macros
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
BEGINNODE
FILETYPE 0
UTILTYPE 4
UTILOBJECTID 0
NODETYPE 218
NAME #NVMPTableLayerMoveWizardSteps
ENDNODE
ENDGROUP
GROUP #Classes
PROPERTIES
Name #Classes
ProjectGroupType #Classes
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30290
NODETYPE 329
NAME #NVMPTableLayerMoveWizard
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30292
NODETYPE 329
NAME #NVMPITableMoveAction
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30299
NODETYPE 329
NAME #NVMPTableMoveAction_ClearPreviousData
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30294
NODETYPE 329
NAME #NVMPTableMoveAction_CollectIds
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30300
NODETYPE 329
NAME #NVMPTableMoveAction_CollectIdsPreMove
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30301
NODETYPE 329
NAME #NVMPTableMoveAction_CollectIdsPostMove
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30297
NODETYPE 329
NAME #NVMPTableMoveAction_RenameSQLTableNames
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 45
UTILOBJECTID 30298
NODETYPE 329
NAME #NVMPTableMoveAction_UpdateSqlDictionary
ENDNODE
ENDGROUP
GROUP #Forms
PROPERTIES
Name #Forms
ProjectGroupType #Forms
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
BEGINNODE
FILETYPE 0
UTILTYPE 11
UTILOBJECTID 0
NODETYPE 201
NAME #NVMPTableLayerMoveWizard
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 11
UTILOBJECTID 0
NODETYPE 201
NAME #NVMPSqlDictionaryIdChanges
ENDNODE
ENDGROUP
GROUP #Reports
PROPERTIES
Name #Reports
ProjectGroupType #Reports
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
ENDGROUP
GROUP #Queries
PROPERTIES
Name #Queries
ProjectGroupType #Queries
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
ENDGROUP
GROUP #Jobs
PROPERTIES
Name #Jobs
ProjectGroupType #Jobs
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
ENDGROUP
GROUP #Menus
PROPERTIES
Name #Menus
ProjectGroupType #Menus
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
ENDGROUP
GROUP #MenuItems
PROPERTIES
Name #MenuItems
ProjectGroupType #MenuItems
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
GROUP #Action
PROPERTIES
Name #Action
ProjectGroupType #Action
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
ENDGROUP
GROUP #Display
PROPERTIES
Name #Display
ProjectGroupType #Display
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
BEGINNODE
FILETYPE 0
UTILTYPE 1
UTILOBJECTID 0
NODETYPE 296
NAME #NVMPTableLayerMoveWizard
ENDNODE
BEGINNODE
FILETYPE 0
UTILTYPE 1
UTILOBJECTID 0
NODETYPE 296
NAME #NVMPSqlDictionaryIdChanges
ENDNODE
ENDGROUP
GROUP #Output
PROPERTIES
Name #Output
ProjectGroupType #Output
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
ENDGROUP
ENDGROUP
GROUP #Services
PROPERTIES
Name #Services
ProjectGroupType #Services
GroupMask #
PreventEditProperties #No
ENDPROPERTIES
ENDGROUP
ENDPROJECT
***Element: END