Microsoft Access从另一个匹配当前记录的表中选择记录

时间:2013-02-23 22:07:05

标签: ms-access select row match

似乎我在MS Access 2010中遇到了一堵砖墙。

要解释我想要实现的目标很难,所以我将从一个基本的例子开始。假设我们有两个表:A和B.

A:

ID     Price    Item
1      5        ABB
2      4        ATV
3      2        CCC

B:

ID     Price limit    Chosen item
1      3    
2      4
3      5
4      6

我想要实现的是从表A到B创建一个关系。表B中的每个记录都必须有关联的表A记录。它应该基于表A字段'价格'和表B字段'价格限制',使得表A中所选记录的价格低于表B记录中规定的价格限制。

也就是说,第一个表B记录的可能表A记录只是CCC,第二个是ATV和CCC,而第三个和第四个记录都是有效的。

就我的有限访问知识而言,我认为我应该在“选择项目”字段行源属性中编写查询。我自己尝试过写作,但没有成功。以下是我的想法:

SELECT [Table A].[ID], [Table A].[Item] 
FROM [Table A] 
WHERE [Table A].[Val] > [Val]; 

但它不起作用。有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

我认为您需要这样的内容,其中下拉框仅包含相关项:

enter image description here

您可以通过将组合的行来源设置为

来进行设置
select item from ta where price<=forms!tb!pricelimit

添加一些代码

Private Sub Form_Current()
   Me.Chosenitem.Requery
End Sub

请注意,此方法附带警告。在连续表格中这样的Usong下拉列表会严重影响除当前行之外的任何行上的数据显示。在这种情况下,显示很好,因为绑定列和要显示的数据是相同的,但是,如果选择是:

 Row Source: select id,item from ta where price<=forms!tb!pricelimit
 Bound Column: 1
 Column Widths : 0cm;2cm

当当前记录的选择产生一个不包含其他行ID的列表时,数据似乎会从记录中消失。也就是说,如果当前行的选择返回了ID 1和2,而下一行已经选择了ID 3,则下一行的组合将显示为空,依此类推。页面