所以我需要为每个仓库做一个产品库存。我使用ms访问作为前端,SQL服务器表示作为后端。
当我使用ms访问作为链接后端时查询工作正常但是当我运行查询时我将后端移动到SQL server express时,弹出一个消息框说:
ODBC调用失败。 [Microsoft] [Sql Server Native CLient 11.0] [Sql Server]多部分标识符" Dbo.tbl_Warehouse.warehouse_ID"无法受约束。(#4104)
所以提出了一个查询( qry_Product_Warehouse ),其中每个仓库都包含每个产品
SELECT tbl_Warehouse.Warehouse_ID, tbl_Product.Product_ID
FROM tbl_Warehouse, tbl_Product;
我还有一个联合查询( Qry_Product_Transactions ),其中包含所有产品交易,包括交易的仓库。与 [Transaction_Type],[日期],[产品],[位置],[数量]
一样然后我有一张表( tbl_product_Quantity ),如果该公司每月进行一次库存重新计票,他们只需输入 [Stock_Recount_Date],[Stock_Recount_Quantity],[product],[仓库]
问题是当我运行这样的查询(简化版的连接)时弹出消息框:
[qry_Product_Warehouse].[warehouse_ID] left join [qry_Product_Transactions].[Location]
[qry_Product_Warehouse].[warehouse_ID] left join [tbl_Product_Quantity].[warehouse]
[qry_Product_Warehouse].[product_ID] left join [qry_Product_Transactions].[Product]
[qry_Product_Warehouse].[Product_ID] left join [tbl_Product_Quantity].[Product]
实际查询是这样的:
SELECT qry_Product_Warehouse.Warehouse_ID,
qry_Product_Warehouse.Product_ID,
CDbl(Nz(IIf(IsNull([tbl_Product_Quantity].[Stock_Recount_Date]),
Sum([qry_Product_Transaction].[qty]),[tbl_Product_Quantity].[Stock_Recount_Quantity]+Sum(IIf([qry_Product_Transaction].[Date]>[tbl_product_quantity].[Stock_Recount_Date],[qry_Product_Transaction].[Qty],0))),0)) AS Current_Qty
FROM (qry_Product_Warehouse LEFT JOIN qry_Product_Transaction ON (qry_Product_Warehouse.Warehouse_ID = qry_Product_Transaction.Location)
AND (qry_Product_Warehouse.Product_ID = qry_Product_Transaction.Product))
LEFT JOIN tbl_Product_Quantity ON (qry_Product_Warehouse.Product_ID = tbl_Product_Quantity.Product)
AND (qry_Product_Warehouse.Warehouse_ID = tbl_Product_Quantity.Warehouse)
GROUP BY qry_Product_Warehouse.Warehouse_ID, qry_Product_Warehouse.Product_ID, tbl_Product_Quantity.Stock_Recount_Quantity, tbl_Product_Quantity.Stock_Recount_Date;