This has had me scratching my head all day. I have multiple queries where I am trying to join using a calculated field. This first query runs as intended, except MS Access design view doesn't work, which isn't a huge deal since I can still edit in SQL view.
SELECT PM_qryBOM_1.parentid AS LVL0,
PM_qryBOM_1.childid AS LVL1,
[PM_qryBOM_1].[parent_part_no] & "/" & [PM_qryBOM_1].[child_part_no] AS BOM_Address,
PM_qryBOM_1.qty,
[PM_qryBOM_1].[parentid] & "/" & [PM_qryBOM_1].[childid] AS BOM_ID,
sol_avgcost.avgcost_material,
sol_avgcost.avgcost_labor,
sol_avgcost.avgcost_sub,
cm_qrypndj_avg.avgofunit_hrs,
PM_qryBOM_1.parentid AS Parent_BOM_ID,
PM_qryBOM_1.parent_part_no AS Parent_BOM_Address,
pm_qrybom_lvl1_costroll.mult
FROM (((pm_qrybom AS PM_qryBOM_1
LEFT JOIN pm_qrybom AS PM_qryBOM_t
ON PM_qryBOM_1.parentid = PM_qryBOM_t.childid)
LEFT JOIN sol_avgcost
ON PM_qryBOM_1.child_part_no = sol_avgcost.part_no)
LEFT JOIN cm_qrypndj_avg
ON PM_qryBOM_1.child_part_no = cm_qrypndj_avg.part_no)
LEFT JOIN pm_qrybom_lvl1_costroll
ON [PM_qryBOM_1].[parentid] & "/" & [PM_qryBOM_1].[childid] =
pm_qrybom_lvl1_costroll.parent_bom_id
WHERE (( ( PM_qryBOM_t.childid ) IS NULL ))
ORDER BY [PM_qryBOM_1].[parent_part_no] & "/" & [PM_qryBOM_1].[child_part_no];
I have multiple other queries where I want to JOIN
in this manner. So I tried applying this same syntax to my next query, but I get the error
JOIN expression not supported.
SELECT pm_qrybom_lvl0.lvl0,
pm_qrybom.childid AS LVL1,
pm_qrybom.qty,
[pm_qrybom_lvl0].[bom_address] & "/" & [pm_qrybom].[child_part_no] AS BOM_Address,
[pm_qrybom_lvl0].[bom_id] & "/" & [pm_qrybom].[childid] AS BOM_ID,
pm_qrybom_lvl0.bom_address AS Parent_BOM_Address,
pm_qrybom_lvl0.bom_id AS Parent_BOM_ID,
sol_avgcost.avgcost_material,
cm_qrypndj_avg.avgofunit_hrs,
cm_collections.cpq_material,
pm_qrybom_lvl1_costroll.mult,
Iif([cm_collections].[cpq_material] <> 0, [cm_collections].[cpq_material],
Iif([mult] = 0, [sol_avgcost].[avgcost_material], [mult])) AS Material_Calc
FROM ((((pm_qrybom_lvl0
INNER JOIN pm_qrybom
ON pm_qrybom_lvl0.lvl0 = pm_qrybom.parentid)
LEFT JOIN sol_avgcost
ON pm_qrybom.child_part_no = sol_avgcost.part_no)
LEFT JOIN cm_qrypndj_avg
ON pm_qrybom.child_part_no = cm_qrypndj_avg.part_no)
LEFT JOIN cm_collections
ON pm_qrybom.childid = cm_collections.partid)
LEFT JOIN pm_qrybom_lvl1_costroll
ON [pm_qrybom_lvl0].[bom_id] & "/" & [pm_qrybom].[childid] =
pm_qrybom_lvl1_costroll.parent_bom_id
ORDER BY [pm_qrybom_lvl0].[bom_address] & "/" & [pm_qrybom].[child_part_no];
The syntax for both queries is the same. Only the reference table names and field names are different. So why can I join with an expression in one query but not the next? I Googled this problem and some suggested to put brackets around everything after ON
in the JOIN
statement. I tried that and it did not resolve the problem.
Any suggestions would be appreciated as I am absolutely stuck on this one.