从数据库 table 中读取(查找多个条件)记录,并使用匹配条件写入数据库 table

Read (lookup multiple criteria) records from database table, and Write to database table with matching criteria

如何在 Access 查询或 VB.net 代码中复制下面的等式?

{=SUM(IF('Customer '!$G='Glass Fabrication'!$D:$G,IF("Hole"='Glass Fabrication'!$A:$A,'Glass Fabrication'!$D:$G)))*E3}

上面的等式是我在 excel 中用于 Vlookup 超过 1 个值和 returns 匹配 2 个条件的值。 (现在,这可以一直持续下去,并且有尽可能多的标准)

现在,我正在 VB.net 使用 MS Access database (.mdb) 创建报价系统。

我有一个 table,它列出了具有多个标识符和 4 个不同价格的所有产品。为简单起见,假设我有 2 个标识符和 4 个价格。

我有像 Name Category 这样的字段作为标识符,示例数据如下所示。

Name Category Tier 1 Tier 2 Tier 3 Tier 4

苹果……水果…………$2………………$2………………$1.7…… ....$1.5

苹果……果汁......$1.......$1......$.75.. ......$.75

橘子..水果.......$1.8.......$1.8.......$1.5........$1.3

可口可乐...饮料......$1.......$1......$.75.. ......$.75

用户输入 = 苹果、果汁、第 1 层

我可以在 excel 中创建 =Sum(If 公式来检查 Name 列以匹配所选值,然后检查 Category 列以检查第二个值,然后检查第一行 header 是否有 Tier 1 value 和 returns </code>.</p> <p>我是 Access 数据库的新手,所以我很难复制它。我试过查询,但它只有 "filters" 这样的条件,并没有 return 一个值。</p> <p>最终,我想要一个名为 <code>Shopping Cart 的 table/query 来接受用户输入,例如“AppleJuiceTier 1”和第 4 列(read-only) 会通过查找这 3 个东西自动计算并找到 </code> 中的 <code>Price

我已经设置了购物车 table,它运行良好,只是我不知道如何自动包含此 read-only calculated/vlookup 列。 (我在 VB.net 中使用 DataGridView 绑定到需要 3 个用户输入的购物车 table。)

最好的方法是什么?在 Access 中进行查询并使其在数据库本身中计算 or VB.net 以处理计算并在每次用户输入 3 个值时写入第 4 列?

在 MS Access 中尝试这个 SQL 查询,前提是您的示例数据保存为 Access table:

SELECT Table.Name, Table.Category, [Enter Tier],
     IIF([Enter Tier] = 'Tier 1', Table.[Tier 1], IIF([Enter Tier] = 'Tier 2', Table.[Tier 2], 
     IIF([Enter Tier] = 'Tier 3', Table.[Tier 3], IIF([Enter Tier] = 'Tier 4', Table.[Tier 4], Null)))) As Price
FROM Table
WHERE Table.Name = [Enter Name] AND Table.Category = [Enter Category]

当您打开查询时,将弹出输入字段供用户填写作为参数请求。最好使用 Access 表单让用户填写未绑定的文本框,然后命令按钮使用文本框值打开查询。表单字段可以替换上面的输入字段。

Dim row AS DataRow = DataTable.Select("ColumnName1 = 'value3'").FirstOrDefault() If Not row Is Nothing Then searchedValue = row.Item("ColumnName2") End If

这里的value3是一个常数值。要使用对象(变量),

Dim row AS DataRow = DataTable.Select("ColumnName1 = '" & variable & "'").FirstOrDefault() 已被使用。