通过labelid查找fieldId
Find fieldId through labelid
请问是否可以通过字段的labelId找到具体table的fieldId
提前致谢
可能的解决方案之一:
static void FindTableFieldsByLabel(Args _args)
{
TableId tableId = tableNum(AccountingDistribution);
str findLabel = literalStr('@SYS132687');
SysDictTable dictTable;
SysDictField dictField;
FieldId fieldId;
dictTable = new SysDictTable(tableId);
fieldId = dictTable.fieldNext(0);
while (fieldId)
{
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSql() && !dictField.isSystem()
&& dictField.labelLabel() == findLabel)
{
info(strFmt('Field name: %1', dictField.name()));
}
fieldId = dictTable.fieldNext(fieldId);
}
info('Job completed');
}
如果您想忽略在扩展数据类型上设置的标签而不是在 table 字段上设置的标签,您也可以使用 dictField.labelDefined()
。
使用交叉引用。通过接口:
- 工具\标签\标签编辑器
- 在
Find what
字段中输入 LabelID
- 单击
Used by
按钮
- 在列表中查找表、地图或视图
您应该先生成交叉引用(工具\交叉引用\定期\更新)
请问是否可以通过字段的labelId找到具体table的fieldId
提前致谢
可能的解决方案之一:
static void FindTableFieldsByLabel(Args _args)
{
TableId tableId = tableNum(AccountingDistribution);
str findLabel = literalStr('@SYS132687');
SysDictTable dictTable;
SysDictField dictField;
FieldId fieldId;
dictTable = new SysDictTable(tableId);
fieldId = dictTable.fieldNext(0);
while (fieldId)
{
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSql() && !dictField.isSystem()
&& dictField.labelLabel() == findLabel)
{
info(strFmt('Field name: %1', dictField.name()));
}
fieldId = dictTable.fieldNext(fieldId);
}
info('Job completed');
}
如果您想忽略在扩展数据类型上设置的标签而不是在 table 字段上设置的标签,您也可以使用 dictField.labelDefined()
。
使用交叉引用。通过接口:
- 工具\标签\标签编辑器
- 在
Find what
字段中输入 LabelID - 单击
Used by
按钮 - 在列表中查找表、地图或视图
您应该先生成交叉引用(工具\交叉引用\定期\更新)