我有三个具有以下结构的表:
Table1: Cat
Fields: Cat0 Cat1
Record 1: A
Record 2: B
Record 3: C
Record 4: D
Table2: CatB
Fields: Option
Record 1: X
Record 2: Y
Table3: CatD
Fields: Option
Record 1: 1
Record 2: 2
如果Cat0的记录中有B,则Cat1应查找CatB 如果Cat0的记录中有D
,Cat1应该查找CatD预期的输出是:
Table1: Cat
Fields: Cat0 Cat1
Record 1: A NULL
Record 2: B X or Y (Combo box)
Record 3: C NULL
Record 4: D 1 or 2 (Combo box)
我在MS Access中使用查找值。
以下代码在查找Cat1时不起作用:
SELECT *
FROM Cat a
INNER JOIN CatB b on b.Option = a.Cat0
WHERE a.Cat0 = "B"
UNION SELECT *
FROM Cat a
INNER JOIN CatD d on d.Option = a.Cat0
WHERE a.Cat0 = "D";
如何实现这一目标?
感谢。
答案 0 :(得分:0)
我从不在表格中设置查询,只在表格上设置。
在名为Options:
的查询中更正UNION语句SELECT "B" As Cat, Option FROM CatB
UNION SELECT "D", Option FROM CatD;
为什么不为CatB和CatD选项提供单一表格,而不必诉诸UNION。
Table: Options
Fields: Cat, Option
Record 1: B, X
Record 2: B, Y
Record 3: D, 1
Record 4: D, 2
在任何一种情况下,组合框都可以在RowSource中使用条件SQL语句
SELECT Option FROM Options WHERE Cat=[Cat0];
如果你想坚持使用UNION并为RowSource使用一体化语句:
SELECT Option FROM (SELECT "B" As Cat, Option FROM CatB
UNION SELECT "D", Option FROM CatD) AS Options WHERE Cat=[Cat0];
Cat1 GotFocus事件中的代码:Me.Cat1.Requery
。