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

时间:2018-06-21 06:50:49

标签: ms-access ms-access-2010

我是Access新手,由于Access中不提供vlookup,我正在努力使用查找。我想获取与某个ID /标记相对应的值。

我有2张桌子。

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

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

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

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

如果不清楚,请告诉我。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用DlookUp Function

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

例如,要获取产品价格,您可以使用类似以下内容的

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

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

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

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

最复杂的部分是标准部分。您必须像在SQL more info here

上键入WHERE子句一样编写

关于条件,始终记住这一点:

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

SQL要求在文本值两边加上单引号。

尝试一下!

答案 1 :(得分:1)

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

表A中的两个字段应标记为复合主键(选择两个字段,并在“设计”功能区中单击“主键”图标)。
在表B中,它们将是外键-卖方可以多次出售这些产品,因此此处允许重复。
您不需要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] 字段。

用于查询的SQL将是:

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

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

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

例如 返回表B中卖方名称为“ Dave”且日期介于1月1日至1月31日之间的所有记录,将写为:

img

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