多个查询作为单个表单的记录源?

时间:2012-07-17 18:24:29

标签: ms-access

我又回来了另一个问题。我有一个基于查询的表单,WHERE子句中的参数是表单的组合框。在详细信息中,它是连续的表单视图,并显示组合框的所有匹配字段(更新组合框后重新查询)。页脚上有一个文本框和一个按钮,用户可以在其中为此数据添加新条目。

我需要在它旁边基本上有一个这种形式的镜子 - 以便可以在视觉上进行比较。我在标题中并排需要两个组合框 - 在详细信息部分中有两个控件根据查询填充。我考虑使用子表单基本上创建了这个幻觉,但我不能有连续表单视图的子表单。我想的想法是将两个查询作为表单的记录源:

Select value FROM t1 WHERE criteria = me.combo1;
select value as val2 from t1 WHERE criteria = me.combo2;

示例数据(相同结构):

          **Friends**
    **User            friend**
  Bob              Jack
  Bob              Zach
  Bob              Mack
  John             Juan
  John             Sha'Quan

然后我会在详细信息部分中有一个'值'控件和一个'val2'控件,它将从不同的查询和标准中填充。

这可能吗?

或者,我应该只有两个子表单,每个表单都有一个不同的父键,由组合框中选择的值决定?我更喜欢它是我列出的方式,但如果没有其他选择,这是我必须做的吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT tx.*, ty.*
FROM (Select id, value FROM t1 WHERE criteria = me.combo1) As tx
LEFT JOIN (select id, value as val2 from t1 WHERE criteria = me.combo2) As ty
ON tx.ID = ty.ID

我必须在第一个组合的更新后事件中重新查询表单。

SELECT x.*,
       y.*
FROM   (SELECT t1.user,
               t1.friend
        FROM   t1
        WHERE  (( ( t1.user ) = [forms]![myForm]![combo5] ))) AS x
       INNER JOIN (SELECT user,
                          friend
                   FROM   t1
                   WHERE  (( ( t1.friend ) = [forms]![myForm]![combo7] ))) AS y
               ON ( x.user = y.user )
                  AND ( x.friend = y.friend );