如何在Access中进行查找或索引/匹配?

问题描述 投票:0回答:2

我是新手,我正在努力研究如何使用查找,因为vlookup在Access中不可用。我想获得与某个ID /标记相对应的值。

我有2张桌子。

表A包含值,例如产品编号,产品类型,价格,剩余库存#,产品类型+产品编号标签。假设产品编号不是唯一的,但将其与产品类型相结合,它将是唯一的,因此我创建了该标签。

表B包含卖方名称,已售商品数量,产品编号,产品类型,产品类型+产品编号标签。

现在使用表A和表B,如何创建一个查询/表格,当我尝试获取某个项目的价格时,我可以使用“产品编号+产品类型”标签,这样我就可以获得总收入每个卖家。

我希望你能理解我想说的话。我想要做的是当我尝试创建查询/表时,我想使用这个“Type + Number”标记作为获取相应项的数据的参考点。它就像Excel中的INDEX / MATCH。但是如何在Access中做到这一点?

请告诉我是否不清楚。

谢谢!

ms-access ms-access-2010
2个回答
2
投票

您需要根据两个表中“产品编号”和“产品类型”字段之间的关系加入两个表。

表A中的两个字段应标记为复合主键(选择这两个字段,然后在“设计”功能区中单击“主键”图标)。 在表B中,它们将是外键 - 卖方可以多次出售这些产品,因此这里允许重复。 你不需要Product Type+Product Number Tag字段。

您的查询的SQL将是:

SELECT  *
FROM    [Table A] LEFT JOIN [Table B] ON [Table A].[Product Number] = [Table B].[Product Number] AND
                                         [Table A].[Product Type] = [Table B].[Product Type]

这将返回表A中的所有记录,并仅返回表B中与主键匹配的那些记录。

最后....不要将Access表视为Excel电子表格。访问是关于数据之间的关系 - 对于开始查询可以用简单的英语表达更容易。

E.g返回表B中所有记录,其中卖方名称为“Dave”,日期为1月1日至1月31日,将写为:

SELECT  *
FROM    [Table B]
WHERE   [Seller Name]='Dave' AND 
        [Sale Date] Between #01/01/2018# AND #01/31/2018#  

(SQL仅以美国日期格式处理)。


1
投票

你可以使用DlookUp Function

它可以作为计算字段用于查询,也可以用在VBA中的代码中:

例如,要获得PRoduct的价格,您可以使用以下内容:

DlookUp("[Price]";"Table A";"[Product Type+Product Number Tag]='" & Value & "'")

从我的角度来看,DlookUp的复杂部分是第三个参数,WHERE clausule。如果您有使用SQL的经验,那么您将没有任何问题。如果你不这样做,不要担心,只需阅读一些信息,如果你遇到困难,请到这里来

您可以使用DlookUp根据条件(应用于唯一字段的标准,ofc)获取任何字段的任何值。

是的,您可以使用它从表或查询中获取值。在我之前提供的链接中,它解释了参数的工作原理。

最复杂的部分是标准部分。您必须编写,就像在SQL more info here上键入WHERE clausule一样

关于标准,请记住:

  1. 如果您的条件是数值,则只需键入[field_criteria]=my_numeric_criteria
  2. 如果您的条件是文本值,则必须使用单引号。例如,[field_criteria]='my_text_criteria'

SQL需要围绕文本值使用单引号。

试试吧!

© www.soinside.com 2019 - 2024. All rights reserved.