16.05.2008, 14:15 | #9 |
Member
|
Вот джоб, о котором я веду речь. Писался под 3.0. Но на 4.0, вроде, запускается.
static void findBadRefRecId(Args _args) { UtilElements utilElements; DictTable dictTable; DictField dictField; DictType dictType; TableName prevTable; Counter i, result, fieldsFound, tablesFound; Boolean skipField(extendedTypeId _typeId) { DictType localDictType = new DictType(_typeId); ; if (!localDictType) { return false; } switch (localDictType.id()) { case typeId2ExtendedTypeId(typeid(recId)) : case typeId2ExtendedTypeId(typeid(tableId)) : case typeId2ExtendedTypeId(typeid(ParametersKey)) : case typeId2ExtendedTypeId(typeid(classId)) : case typeId2ExtendedTypeId(typeid(FieldNum)) : case typeId2ExtendedTypeId(typeid(fieldId)) : case typeId2ExtendedTypeId(typeid(FontSize)) : case typeId2ExtendedTypeId(typeid(SessionId)) : case typeId2ExtendedTypeId(typeid(timeOfDay)) : case typeId2ExtendedTypeId(typeid(Days)) : case typeId2ExtendedTypeId(typeid(WeekDay)) : case typeId2ExtendedTypeId(typeid(InventDimFixed)) : case typeId2ExtendedTypeId(typeid(PrintCopies)) : case typeId2ExtendedTypeId(typeid(TaxReportField)) : case typeId2ExtendedTypeId(typeid(JmgSeconds)) : case typeId2ExtendedTypeId(typeid(Minutes)) : case typeId2ExtendedTypeId(typeid(Seconds)) : case typeId2ExtendedTypeId(typeid(Column)) : case typeId2ExtendedTypeId(typeid(Columns)) : case typeId2ExtendedTypeId(typeid(Yr)) : case typeId2ExtendedTypeId(typeid(Months)) : case typeId2ExtendedTypeId(typeid(NumberSequenceRange)) : return true; default : } if (localDictType.extend()) { return skipField(localDictType.extend()); } return false; } str typesChain(extendedTypeId _typeId) { DictType chainDictType = new DictType(_typeId); str ret; ; if (chainDictType) { ret = ret + strfmt(" --> %1", chainDictType.name()); } if (chainDictType.extend()) { ret = ret + strfmt("%1", typesChain(chainDictType.extend())); } return ret; } ; while select utilElements order by name where utilElements.recordType == UtilElementType::Table { if (prevTable != utilElements.name) { dictTable = new DictTable(tablename2id(utilElements.name)); if (!dictTable.isMap() && !dictTable.isView() && !dictTable.isTmp()) { info (strfmt("%1", dictTable.name())); tablesFound++; result = 0; for (i = 1; i <= dictTable.fieldCnt(); i++) { dictField = new DictField(dictTable.id(), dictTable.fieldCnt2Id(i)); if (dictField.baseType() == Types::Integer && !dictField.isSystem() && !skipField(dictField.typeId())) { dictType = new DictType(dictField.typeId()); info (strfmt(" %1 -- %2", dictField.name(), dictType ? typesChain(dictField.typeId()) : int2str(dictField.typeId()))); // if (dictType) // { // info (strfmt(" %1 -- %2", dictType.label(), dictType.help())); // } fieldsFound++; result++; } } if (!result) { infolog.cut(infolog.line()); tablesFound--; } } } prevTable = utilElements.name; } info (strfmt("Total number of tables found: %1", tablesFound)); info (strfmt("Total number of fields found: %1", fieldsFound)); }
__________________
С уважением, glibs® |
|