如何从 FormBuildStringControl 控件中获取 table 字段名称
How to get table field name from a FormBuildStringControl control
我想问一下如何从 FormBuildStringControl 中获取物理 table 字段名称。
一般来说,我可以说我必须循环一个表单的所有字符串控件。
并找到相应的 Table 字段名称。
首先,我在以下 link 的帮助下实现了浏览所有控件。 Loop form fields
第一部分非常有效,我可以毫无问题地导航到表单控件,但我的问题是当我想找到 Table 字段名时。
switch(control.handle())
{
case classnum(FormBuildStringControl):
FormBuildStringControl formBuildStrControl =Control FormBuildStringControl;
str name = formBuildStrControl.name();
info( formBuildStrControl.name()); // THE CORRECT VALUE CustTable_CustAccount
info(fieldId2Name(formBuildStrControl.dataSource(),formStrControl.Datafield()));// THE FALSE VALUE ORDERID
info(tableId2Name(formBuildStrControl.dataSource()))// false value SalesLine
break;
}
我没有得到方法 fieldId2Name() 和 tableId2Name() 的预期结果。原因是 datadield 和 datasource() 方法没有 return 来自 SalesTable 和 CustAccount
的正确 ID
有人建议我如何从 FormBuildStringControl 中得到正确的 table 字段名称吗?
谢谢
尼科斯。
问题出在您的值 formStrControl.dataSource()
。
将其更改为 formStrControl.dataSourceObject().table()
。
您可能会发现更有用的东西 是 formStringControl.fieldBinding()
中的 FieldBinding
,它提供了您可能需要的所有信息。
这里有一些代码可以说明我在说什么:
FormStringControl fsc;
FieldBinding fieldBinding;
// Using your current method
fsc = element.control(element.controlId('CustTable_AccountNum'));
info(strFmt("%1", fieldId2name(fsc.dataSourceObject().table(), fsc.dataField())));
// Using Field Binding
fieldBinding = fsc.fieldBinding();
info(strFmt("%1, %2, %3", fieldBinding.fieldId(), fieldBinding.fieldName(), fieldBinding.tableId()));
我想 post 我的问题的解决方案来自@Alex Kwitnypost
case classnum(FormBuildStringControl):
FormStringControl fsc = new FormStringControl(control as FormBuildStringControl,_formRun) ;
FieldBinding fieldBinding;
fieldBinding = fsc.fieldBinding();
info(strFmt("%1, %2, %3", fieldId2Name(fieldBinding.tableId(),fieldBinding.fieldId()), fieldBinding.fieldName(), tableId2Name( fieldBinding.tableId())));
_this.add(fieldBinding.fieldId());
break;
我想问一下如何从 FormBuildStringControl 中获取物理 table 字段名称。
一般来说,我可以说我必须循环一个表单的所有字符串控件。 并找到相应的 Table 字段名称。
首先,我在以下 link 的帮助下实现了浏览所有控件。 Loop form fields
第一部分非常有效,我可以毫无问题地导航到表单控件,但我的问题是当我想找到 Table 字段名时。
switch(control.handle())
{
case classnum(FormBuildStringControl):
FormBuildStringControl formBuildStrControl =Control FormBuildStringControl;
str name = formBuildStrControl.name();
info( formBuildStrControl.name()); // THE CORRECT VALUE CustTable_CustAccount
info(fieldId2Name(formBuildStrControl.dataSource(),formStrControl.Datafield()));// THE FALSE VALUE ORDERID
info(tableId2Name(formBuildStrControl.dataSource()))// false value SalesLine
break;
}
我没有得到方法 fieldId2Name() 和 tableId2Name() 的预期结果。原因是 datadield 和 datasource() 方法没有 return 来自 SalesTable 和 CustAccount
的正确 ID有人建议我如何从 FormBuildStringControl 中得到正确的 table 字段名称吗?
谢谢 尼科斯。
问题出在您的值 formStrControl.dataSource()
。
将其更改为 formStrControl.dataSourceObject().table()
。
您可能会发现更有用的东西 是 formStringControl.fieldBinding()
中的 FieldBinding
,它提供了您可能需要的所有信息。
这里有一些代码可以说明我在说什么:
FormStringControl fsc;
FieldBinding fieldBinding;
// Using your current method
fsc = element.control(element.controlId('CustTable_AccountNum'));
info(strFmt("%1", fieldId2name(fsc.dataSourceObject().table(), fsc.dataField())));
// Using Field Binding
fieldBinding = fsc.fieldBinding();
info(strFmt("%1, %2, %3", fieldBinding.fieldId(), fieldBinding.fieldName(), fieldBinding.tableId()));
我想 post 我的问题的解决方案来自@Alex Kwitnypost
case classnum(FormBuildStringControl):
FormStringControl fsc = new FormStringControl(control as FormBuildStringControl,_formRun) ;
FieldBinding fieldBinding;
fieldBinding = fsc.fieldBinding();
info(strFmt("%1, %2, %3", fieldId2Name(fieldBinding.tableId(),fieldBinding.fieldId()), fieldBinding.fieldName(), tableId2Name( fieldBinding.tableId())));
_this.add(fieldBinding.fieldId());
break;