将值从表单传递到视图中的方法

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;
}