Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL查询MS Access中使用自定义函数_Sql_Ms Access - Fatal编程技术网

在SQL查询MS Access中使用自定义函数

在SQL查询MS Access中使用自定义函数,sql,ms-access,Sql,Ms Access,我正在使用以下查询: SELECT DISTINCT Purchases.PONumber, SalesOrders.SalesOrderNumber, Bookings.VessalVoyage, Purchases.Quantity, Bookings.ShippingLine, Bookings.CargoCutoffDate, SalesOrders.Quantity AS Quant, SalesOrders.QuantityUOM AS QuantUOM, Bookings.Book

我正在使用以下查询:

SELECT DISTINCT Purchases.PONumber, SalesOrders.SalesOrderNumber, Bookings.VessalVoyage, Purchases.Quantity, Bookings.ShippingLine, Bookings.CargoCutoffDate, SalesOrders.Quantity AS Quant, SalesOrders.QuantityUOM AS QuantUOM, Bookings.BookingNumber, Shipments.FreightRate, Purchases.VendorID, Shipments.ShipmentInvoiceNumber, Shipments.InvoicePIDate, Bookings.SailingDate, Bookings.PortOfLoading, Bookings.ArrivalDate, Containers.InspectionCharge, SalesOrders.Grade, Purchases.NumberOfContainers, TruckingRates.TruckingRate, [Purchases.NumberOfContainers]*[TruckingRates.TruckingRate] AS TruckCost, IIf(IsNull([Purchases.NumberOfContainers]*[Containers.InspectionCharge]),0,[Purchases.NumberOfContainers]*[Containers.InspectionCharge]) AS Inspt, SalesOrders.SIHUID, SalesOrders.SIHUShippingAssistant, (IIf([BuyPriceUOM]='sht',[BuyPrice],IIf([BuyPriceUOM]='kg',[BuyPrice]*907.185,IIf([BuyPriceUOM]='MT',[BuyPrice]*0.907185,IIf([BuyPriceUOM]='lbs',[BuyPrice]*2000.000574,[BuyPrice]))))/IIf(Nz([BuyPriceCurrency],"USD")="USD",1,Nz([BuyPriceExchangeRate],0))) AS Buy,Query6.Load
FROM (((((Purchases INNER JOIN Containers 
ON Purchases.PONumber = Containers.PONumber) 
INNER JOIN SalesOrders 
ON Containers.SalesOrderNumber = SalesOrders.SalesOrderNumber) 
INNER JOIN Bookings 
ON Containers.BookingID = Bookings.BookingID) 
INNER JOIN Shipments 
ON Containers.ShipmentID = Shipments.ShipmentID) 
LEFT JOIN TruckingRates 
ON Containers.TruckingRateID = TruckingRates.TruckingRateID) 
LEFT JOIN Query6 
ON Containers.PONumber = Query6.PONumber
GROUP BY Purchases.PONumber, SalesOrders.SalesOrderNumber, Bookings.VessalVoyage, Purchases.Quantity, Bookings.ShippingLine, Bookings.CargoCutoffDate, SalesOrders.Quantity, SalesOrders.QuantityUOM, Bookings.BookingNumber, Shipments.FreightRate, Purchases.VendorID, Shipments.ShipmentInvoiceNumber, Shipments.InvoicePIDate, Bookings.SailingDate, Bookings.PortOfLoading, Bookings.ArrivalDate, Containers.InspectionCharge, SalesOrders.Grade, Purchases.NumberOfContainers, TruckingRates.TruckingRate, SalesOrders.SIHUID, SalesOrders.SIHUShippingAssistant, Containers.NetWeight, Purchases.BuyPrice, Purchases.BuyPriceCurrency, Purchases.BuyPriceUOM, Purchases.BuyPriceExchangeRate, Containers.WeightUOM, SalesOrders.UnitPrice, Containers.SalesOrderNumber, Containers.ContainerNo,Query6.Load;
在查询6中,我使用函数获取“WtInMT”: 问题6:

功能:

Public Function GetWeightInMT(WtToConvert As Double, WtInUOM As String) As Double
    ' MT(Metric Tons)
    ' Pounds(lbs)      to MT: lbs / 2204.6 = MT
    ' Kilograms(kg)    to MT: kg * .001 = MT
    ' Short tons(sh t) to MT: sh t * .907185 = MT.

    Select Case WtInUOM
        Case "lbs"
            GetWeightInMT = WtToConvert / 2204.6
        Case "kg"
            GetWeightInMT = WtToConvert * 0.001
        Case "sh t"
            GetWeightInMT = WtToConvert * 0.907185
        Case Else
            GetWeightInMT = WtToConvert
    End Select
    If GetWeightInMT < 1 Then GetWeightInMT = 0

End Function
公共函数GetWeightInMT(WtToConvert为Double,WtInUOM为String)为Double
'公吨(公吨)
'磅(磅)至公吨:磅/2204.6=公吨
'千克(kg)至公吨:千克*.001=公吨
'短吨(短吨)至公吨:短吨*.907185=公吨。
选择casewtinuom
案例“lbs”
GetWeightInMT=WtToConvert/2204.6
案例“kg”
GetWeightInMT=WtToConvert*0.001
案例“SHT”
GetWeightInMT=WtToConvert*0.907185
其他情况
GetWeightInMT=WtToConvert
结束选择
如果GetWeightInMT<1,则GetWeightInMT=0
端函数
当我运行查询时,我得到数据不匹配错误

有什么建议吗??
谢谢

您是否可以在任何地方传递
Null
作为重量?可能值得一试。
GetWeightInMT(NZ)(Sum(…
的可能重复项)您似乎忘记了前面类似问题的答案。谢谢。我一定会尝试的
Public Function GetWeightInMT(WtToConvert As Double, WtInUOM As String) As Double
    ' MT(Metric Tons)
    ' Pounds(lbs)      to MT: lbs / 2204.6 = MT
    ' Kilograms(kg)    to MT: kg * .001 = MT
    ' Short tons(sh t) to MT: sh t * .907185 = MT.

    Select Case WtInUOM
        Case "lbs"
            GetWeightInMT = WtToConvert / 2204.6
        Case "kg"
            GetWeightInMT = WtToConvert * 0.001
        Case "sh t"
            GetWeightInMT = WtToConvert * 0.907185
        Case Else
            GetWeightInMT = WtToConvert
    End Select
    If GetWeightInMT < 1 Then GetWeightInMT = 0

End Function