将值从表单传递到视图中的方法
Pass a value from a form to a method in a view
我有一个包含货件数据源的视图 table。此视图有一个包含查询的方法。此查询从销售行 table 获取此货件的货件 ID 和 returns 销售 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;
}
我认为您要查找的是查询范围 (https://msdn.microsoft.com/en-us/library/aa638454.aspx) or a display method (https://msdn.microsoft.com/en-us/library/aa595058.aspx)
你有更多的细节或示例代码吗?
我会使用类似于下面的计算列。我和你处在不同的环境中,所以 SQL 在我的盒子上无效,但它应该适用于你的盒子。
向您的视图添加一个新的字符串计算列,然后将此方法设置为数据方法。
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;
}
我有一个包含货件数据源的视图 table。此视图有一个包含查询的方法。此查询从销售行 table 获取此货件的货件 ID 和 returns 销售 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;
}
我认为您要查找的是查询范围 (https://msdn.microsoft.com/en-us/library/aa638454.aspx) or a display method (https://msdn.microsoft.com/en-us/library/aa595058.aspx)
你有更多的细节或示例代码吗?
我会使用类似于下面的计算列。我和你处在不同的环境中,所以 SQL 在我的盒子上无效,但它应该适用于你的盒子。
向您的视图添加一个新的字符串计算列,然后将此方法设置为数据方法。
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;
}