如何在Access Query或VB.net代码中复制下面的等式?
{=SUM(IF('Customer '!$G$3='Glass Fabrication'!$D$3:$G$3,IF("Hole"='Glass Fabrication'!$A$4:$A$15,'Glass Fabrication'!$D$4:$G$15)))*E3}
上面的等式是我在excel中使用的Vlookup超过1个值并返回一个匹配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
Orange..Fruit ......... $ 1.8 ....... $ 1.8 ......... $ 1.5 ......... $ 1.3
...可乐饮料............ $ 1 $ .......... 1 ........... $ 75 .... .... $ 75
用户输入= Apple,Juice,Tier 1
我可以在excel中设置=Sum(If
公式以检查Name
列是否与所选值匹配,然后检查Category
列以检查第二个值,然后检查第一行标题Tier 1 value
并返回$1
。
我是Access数据库的新手,所以我很难如何复制它。我尝试过查询,但它只是"过滤"这样的标准,并没有返回值。
最终,我希望一个名为Shopping Cart
的表/查询接受用户输入,例如" Apple
,Juice
,Tier 1
"和第4列(只读)会自动计算并查找Price
$1
,查找这3件事。
我已经设置了购物车表,除了我不知道如何包含这个只读的自动计算/ vlookup列之外,它工作得很好。 (我在VB.net中使用DataGridView绑定到一个需要3个用户输入的购物车表。)
最好的方法是什么?在Access中进行查询并使其在数据库本身or
VB.net中计算以处理计算并在每次用户输入3个值时写入第4列?
答案 0 :(得分:0)
在MS Access中尝试此SQL查询,前提是您的示例数据保存为Access表:
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]
当您打开查询时,将弹出Enter字段供用户填写为参数请求。最好使用Access表单为用户填充未绑定的文本框,并使用文本框值打开命令按钮打开查询。表单字段可以替换上面的输入字段。
答案 1 :(得分:0)
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()
。