Acumatica 表与PXDatabase SelectMulti连接

Acumatica 表与PXDatabase SelectMulti连接,acumatica,Acumatica,免责声明:我是C和Acumatica框架的新手 我希望实现一个数据库插槽,但是我需要从连接的表中提取数据。我正在使用下面代码段中的PXDatabase.SelectMulti方法,但是,我无法使它与联接一起工作。我似乎也找不到任何连接表的方法示例 有没有一种方法可以用这个方法连接表,或者用另一种方法查询数据 公共类数据库SlotSet示例:IPrefetchable { 受保护的列表值=新列表;//将值存储在此处 公共静态列表值 { 收到 { //从插槽中动态获取值。通过提供表名,您可以通知系统

免责声明:我是C和Acumatica框架的新手

我希望实现一个数据库插槽,但是我需要从连接的表中提取数据。我正在使用下面代码段中的PXDatabase.SelectMulti方法,但是,我无法使它与联接一起工作。我似乎也找不到任何连接表的方法示例

有没有一种方法可以用这个方法连接表,或者用另一种方法查询数据

公共类数据库SlotSet示例:IPrefetchable { 受保护的列表值=新列表;//将值存储在此处 公共静态列表值 { 收到 { //从插槽中动态获取值。通过提供表名,您可以通知系统何时应该重置插槽。 返回PXDatabase.GetSlotSlotSuperKey,typeofYourTable.values; } } 公共空预取 { //在这里读取数据库 PXDatabase中的foreachPXDataRecord rec.SelectMulti new PXDataField,//系统应选择的字段的定义 新建PXDataFieldValueSome条件//需要应用的限制的定义 { //在此处从数据库填充您的集合 values.Addrec.GetString0; } } }
是的,如果使用BQL.Fluent作为参考,BQL查询也会简化。请参见以下用于服务订单的内容:

 foreach (PXResult<FSServiceOrder> res in 
 SelectFrom<FSServiceOrder>.
 InnerJoin<FSAppointment>.On<FSAppointment.soRefNbr.IsEqual<FSServiceOrder.refNbr>>.
 InnerJoin<FSWFStage>.On<FSWFStage.wFStageID.IsEqual<FSAppointment.wFStageID>>.
 InnerJoin<FSRoom>.On<FSRoom.roomID.IsEqual<FSServiceOrder.roomID>>.
 InnerJoin<FSEquipment>.On<FSEquipment.registrationNbr.IsEqual<FSRoom.descr>>.
 Where<FSServiceOrder.srvOrdType.IsEqual<P.AsString>.
     And<FSWFStage.wFStageCD.IsEqual<P.AsString>>>.
     View.Select(this, "TO", "SCHEDULED")
{
   FSServiceOrder fsServiceOrder = res.GetItem<FSServiceOrder>();
   FSAppointment fsAppointment = res.GetItem<FSAppointment>();
}

然后,您可以使用下面的命令提取特定的表数据:

我不确定它是否有效,但您可以尝试使用投影吗?我的意思是你上面的桌子是投影,你可以在投影中做连接。再一次我不确定这是否可行,因为我自己从来没有将SelectMulti与投影一起使用过。