Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Ms access ms access条件表达式中的数据类型不匹配错误_Ms Access - Fatal编程技术网

Ms access ms access条件表达式中的数据类型不匹配错误

Ms access ms access条件表达式中的数据类型不匹配错误,ms-access,Ms Access,我正在使用以下查询: select Containers.SalesOrderNumber, GetWeightInMT(Sum([NetWeight]), WeightUOM) as Expr1, CInt(Round(GetWeightInMT(Sum([NetWeight]), WeightUOM), 0)) as WtMt, SalesOrders.CustomerID, SalesOrders.SalesOrderID, SalesOrders.

我正在使用以下查询:

select Containers.SalesOrderNumber,
    GetWeightInMT(Sum([NetWeight]), WeightUOM) as Expr1,
    CInt(Round(GetWeightInMT(Sum([NetWeight]), WeightUOM), 0)) as WtMt,
    SalesOrders.CustomerID,
    SalesOrders.SalesOrderID,
    SalesOrders.UnitPrice,
    SalesOrders.Quantity,
    SalesOrders.SalesCommission,
    SalesOrders.LatestShipDate,
    SalesOrders.PortOfDischarge,
    SalesOrders.PlaceOfDelivery,
    SalesOrders.LowerTolerancePct,
    SalesOrders.UpperTolerancePct,
    SalesOrders.Grade,
    (SalesOrders.Quantity - WtMt) as OpenQty
from Containers
inner join SalesOrders on Containers.SalesOrderNumber = SalesOrders.SalesOrderNumber
group by Containers.SalesOrderNumber,
    Containers.WeightUOM,
    SalesOrders.CustomerID,
    SalesOrders.SalesOrderID,
    SalesOrders.UnitPrice,
    SalesOrders.Quantity,
    SalesOrders.SalesCommission,
    SalesOrders.LatestShipDate,
    SalesOrders.PortOfDischarge,
    SalesOrders.PlaceOfDelivery,
    SalesOrders.LowerTolerancePct,
    SalesOrders.UpperTolerancePct,
    SalesOrders.Grade;
然后在我的文本框中计算“OpenQty”的总和。 但是,我得到错误“条件表达式中的数据类型不匹配”。 请帮忙。
谢谢

您不能将计算字段(在本例中为
WtMt
)用作另一字段计算的一部分。您必须重新使用整个计算

(SalesOrders.Quantity - WtMt) as OpenQty


然而,这可能不是唯一的问题。我建议每次运行一个计算字段的查询,以查看哪个字段实际给出了错误。

可能GetWeightInMT()函数返回的是空字符串值,在这种情况下,Round()函数将生成该错误。GetWeightInMT()函数不返回值。OpenQty值是正的和负的。这是因为??如果函数总是返回一个数字类型,甚至是一个可以被视为按轮编号()的字符串,例如“1”或“-1”,则不应该是错误的。如果不直接分析项目和调试,这就是我所能提供的所有可能的原因。感谢您的帮助实际上,可以在另一个计算字段中引用计算字段,只是测试以确认这一点。不能在同一查询中引用WHERE或HAVING子句中的计算字段。我不是说表级计算类型字段。谢谢大家的帮助。结果证明我使用了错误的字段进行计算。讨厌的家伙!我应该想到这一点。很高兴你找到了解决办法。
(SalesOrders.Quantity - CInt(Round(GetWeightInMT(Sum([NetWeight]), WeightUOM), 0))) as OpenQty