2017-08-20 37 views
-1

我有以下结构三个表:选择记录

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 

CAT1应该查找到中CatB,如果Cat0具有的B创纪录的
CAT1应该查找到CATD,如果Cat0有在其记录

预期输出d是:

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"; 

如何才能实现这一目标?

谢谢。

+1

猫有两个字段,但你只给每行一个值。 “如果Cat0有B,Cat1有CatB的查找选项,Cat1有CatD的查找选项,如果Cat0有D,”还不清楚。请用足够的句子说出你的意思。使用简单的句子。明确提及部分事物。尝试谷歌翻译。请阅读并在[mcve]上采取行动。 – philipxy

+0

编辑你的问题,并显示你想要的结果。 –

+0

你正在寻找一个表或表单中的查找字段吗?因为表格中的查找选项非常有限。 –

回答

0

我从不在表格中设置查找,只在表单上。

正确UNION语句中的查询命名选项:

SELECT "B" As Cat, Option FROM CatB 
UNION SELECT "D", Option FROM CatD; 

而不必求助于工会,你为什么不具有对中CatB和CATD选择单个表的。

Table:  Options 
Fields: Cat, Option 
Record 1: B, X 
Record 2: B, Y 
Record 3: D, 1 
Record 4: D, 2 

无论哪种情况,组合框都可以在行来源中具有条件SQL语句。
SELECT Option FROM Options WHERE Cat=[Cat0];

如果你想坚持UNION和使用所有功能于一身的语句行来源:

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

+0

感谢您的建议和回应。我对数据库没有复杂的需求,并且希望使用简单的SharePoint + Access解决方案。所以在Access数据库字段查找很好。 – reservoirinvest

+0

我试过'SELECT Option FROM Options WHERE Cat = [Cat0];'在CatB和CatD合并的单个选项表上,但Cat.Cat1不显示任何值。有什么建议? – reservoirinvest

+0

您试图将其作为查找RowSource?下拉列表是否显示项目? – June7