Find the tables extending a specific extended data type
Recently I was instructed to updated a table field, It is easy to write a simple statement to complete the task. But I have no idea about that there may be some tables having the same field in the system. So I writed a job to verify mine suspicious.
1 static void Jinn_FindExtendedType(Args _args) 2 { 3 DictTable m_DictTable; 4 DictField m_DictField; 5 ExtendedTypeId m_EDTItemId, m_EDTItemGroup; 6 Dictionary m_Dictionary = new Dictionary(); 7 TableName m_TableName; 8 FieldName m_ItemName, m_GroupName; 9 FieldId m_FieldIdItem, m_FieldIdGroup; 10 Common m_Common; 11 int i, j; 12 boolean m_IsItem, m_IsGroup; 13 ; 14 15 m_EDTItemGroup = m_Dictionary.typeName2Id("ItemGroupId"); 16 m_EDTItemId = m_Dictionary.typeName2Id("ItemId"); 17 18 for (i = 1; i <= m_Dictionary.tableCnt(); i++) 19 { 20 m_DictTable = new DictTable(m_Dictionary.tableCnt2Id(i)); 21 m_TableName = m_DictTable.name(); 22 23 if (!m_DictTable.isMap() && !m_DictTable.isTmp() && 24 !m_DictTable.isView() && m_DictTable.rights() >= AccessType::View) 25 { 26 m_IsItem = false; 27 m_IsGroup = false; 28 for (j = 1; j <= m_DictTable.fieldCnt(); j++) 29 { 30 m_DictField = new DictField(m_DictTable.id(), m_DictTable.fieldCnt2Id(j)); 31 if (m_DictField && m_DictField.typeId() == m_EDTItemId) 32 { 33 m_ItemName = m_DictField.name(); 34 m_FieldIdItem = m_DictField.id(); 35 m_IsItem = true; 36 } 37 if (m_DictField && m_DictField.typeId() == m_EDTItemGroup) 38 { 39 m_GroupName = m_DictField.name(); 40 m_FieldIdGroup = m_DictField.id(); 41 m_IsGroup = true; 42 } 43 44 } 45 46 if (m_IsItem && m_IsGroup) 47 { 48 m_Common = m_DictTable.makeRecord(); 49 select firstonly m_Common; 50 51 if (m_Common) 52 { 53 info(strfmt("Table name: %1, ItemId Name: %2, Group name: %3.", m_DictTable.name(), m_ItemName, m_GroupName)); 54 info(strfmt("Item: %1, Old group: %2, New group: %3", m_Common.(m_FieldIdItem), m_Common.(m_FieldIdGroup), 55 InventTable::find(m_Common.(m_FieldIdItem)).ItemSubGroupId)); 56 info("-----------------------------------------------------------------------------"); 57 } 58 } 59 } 60 } 61 }