Eri*_*cP. 0 join view acumatica
我正在尝试从视图上的连接字段中获取值。示例代码:
public PXSelectJoin<Table1,
LeftJoinSingleTable<Table2, On<Table2.FieldA, Equal<Table1.FieldB>>>> Document
Run Code Online (Sandbox Code Playgroud)
现在假设表 2 具有未包含在表 1 中的 FieldC。我如何获取该数据?
例子:
public SomeFunction()
{
if (Table2.FieldC != null)
{
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
Eric,您检查过T200 培训课程中的
“访问检索的数据记录”部分吗?
通常,人们会在主数据视图中联接多个 DAC,以便在Where 子句中使用它们或在 UI 中显示(以只读模式)联接的 DAC 字段。
除了 T200 类中显示的内容之外,还有 2 个选项可用于访问主数据视图中加入的 DAC 的字段:
使用与您最初在主数据视图中加入的主 DAC 匹配的主 DAC 执行 BQL 查询:
var joinedDAC = PXSelect<Table2, Where<Table2.FieldA, Equal<Current<Table1.FieldB>>>>>.Select(this);
Run Code Online (Sandbox Code Playgroud)如果您需要更新已加入 DAC 中的某些值并将它们保存回数据库,则有必要声明一个数据视图,其中主 DAC 与您最初在主数据视图中加入的 DAC 相匹配:
PXSelect<Table2, Where<Table2.FieldA, Equal<Current<Table1.FieldB>>>>> JoinedDAC;
Run Code Online (Sandbox Code Playgroud)
要访问已加入 DAC 的字段,只需调用 JoinedDAC 天视图的 Select 方法即可:
Table2 record = JoinedDAC.Select();
Run Code Online (Sandbox Code Playgroud)附带说明一下,ARDocType 只是 SOOrder DAC 中声明的字符串字段:
public partial class SOOrder : PX.Data.IBqlTable, PX.Data.EP.IAssign, IFreightBase, ICCAuthorizePayment, ICCCapturePayment, IInvoice
{
...
#region ARDocType
public abstract class aRDocType : PX.Data.IBqlField
{
}
protected String _ARDocType;
[PXString(ARRegister.docType.Length, IsFixed = true)]
[PXFormula(typeof(Selector<SOOrder.orderType, SOOrderType.aRDocType>))]
public virtual String ARDocType
{
get
{
return this._ARDocType;
}
set
{
this._ARDocType = value;
}
}
#endregion
...
}
Run Code Online (Sandbox Code Playgroud)
并且Document.Current将始终返回 SOOrder DAC 的实例,因为它在内部调用时Document.Cache.Current也始终从缓存返回当前记录。PXCache 设计为仅处理单一类型的记录,不能包含任何连接的记录。包含所有连接的 DAC 的结果集存储在 PXView QueryCache 中...
| 归档时间: |
|
| 查看次数: |
1347 次 |
| 最近记录: |