我有一个包含货件表数据源的视图。此视图有一个包含查询的方法。此查询获取货件ID,并从此货件的销售线表中返回销售ID。此视图具有计算字段,该字段是查询的输出。然后在表单上使用计算字段。
如果我对货件ID进行硬编码,则流程正常运行。我的问题是如何从货件列表中动态获取货件ID。例如,我有一个列出所有货件的表格。我想在货件ID旁边放置一个字段,其中包含上述流程中计算的销售ID。
底线:我希望网格的第一列是货件ID,第二列是第一列中货件的销售ID。
这是上述方法的一个示例,其中包含查询:
private static server str findSalesLine()
{
WMSShipment wmsShipment;
WMSOrderTrans wmsOrderTrans;
SalesLine salesLine;
select wmsShipment
join wmsOrderTrans
where wmsShipment.shipmentId == '1040383'
&& wmsShipment.shipmentId == wmsOrderTrans.shipmentId
join salesId from salesLine
where salesLine.LineNum == wmsOrderTrans.inventTransRefLineNum
&& salesLine.SalesID == wmsOrderTrans.inventTransRefID
&& salesLine.ExternalItemId != '';
return salesLine.SalesId;
}
答案 0 :(得分:0)
我认为您要查找的是查询范围(https://msdn.microsoft.com/en-us/library/aa638454.aspx)或显示方法(https://msdn.microsoft.com/en-us/library/aa595058.aspx)
您还有更多细节或示例代码吗?
答案 1 :(得分:0)
我会使用类似于下面的计算列。我的环境与您不同,因此SQL在我的盒子上无效,但它应该适用于您的。
在视图中添加一个新的字符串计算列,然后将此方法设置为datamethod。
public static server str getSalesId()
{
tableName viewName = tableStr(testView);//name of your view
DataSourceName wmsShipmentDsName = identifierStr(WMSShipment);//change if your dsname is different on your view
str returnStr;
returnStr =
" SELECT G1.SALESID FROM SALESLINE G1 " + //don't use "T1 T2" etc as aliases on computed columns
" JOIN WMSORDERTRANS G2 ON " +
" G1.LINENUM = G2.INVENTTRANSREFLINENUM AND " +
" G1.SALESID = G2.INVENTTRANSREFID AND " +
" SALESLINE.EXTERNALITEMID <> '' " +
" WHERE G2.SHIPMENTID == " +
SysComputedColumn::returnField(viewName, wmsShipmentDsName, fieldStr(WMSShipment, ShipmentId));
return returnStr;
}