MS Access - 如何在不同的表中增加数字?

时间:2016-08-18 15:53:37

标签: sql vba ms-access access-vba

我是MS Access的新手,我的问题是,如果我有两个表,Table1有10个条目,那个表有一个是和否的下拉列表,还有一个名称字段(多个具有相同名称的条目)。现在在表2中有一个名称字段(没有多个条目)和总字段。因此,每当用户从Table1的下拉菜单中选择" yes"那么我的Table2中的总字段应该增加1.因此可以这样做或者是否有任何其他简单的方法解决这个问题?提前谢谢。

1 个答案:

答案 0 :(得分:3)

您不能直接在MS Access中的表内执行此操作。在MS Excel中,您可以创建一个公式来计算表中的TRUE-FALSE标志,并使用COUNTIFS给出该计数,但是没有选项可以直接在Access的表字段中执行此操作(编写公式)。访问不是那样的。

您需要SQL查询才能执行所需操作。但是,MS Access不允许在UPDATE查询上使用聚合函数,这意味着您不能将GROUP BY与UPDATE一起使用。

您可以做的是编写一个宏,该宏调用3个不同的SQL查询,以类似的解决方式执行您想要的操作

我们有以下示例:

我将使用表格: 表1(ID,名称为文本,检查AS布尔值) 表2(ID,Name_Total为Text,Total为Integer)

我创建并保存了以下查询:

<强>查询1

SELECT * INTO Temp_Table
FROM 
    (SELECT Name, Count(Name) AS Count_Total 
    FROM Table1, Table2 
    WHERE Name = Name_Total AND Check = True GROUP BY Name) AS [Counter];

<强> QUERY2

UPDATE Table2 
INNER JOIN Temp_Table ON Table2.Name_Total = Temp_Table.Name 
SET Total = Count_Total;

<强> QUERY3

DROP TABLE Temp_Table;

第一个查询创建一个临时表,在Table1中为每个名称计算表中出现的次数。 第二个Query使用找到的值更新Table2上的Total Values并将其放在Temp_Table上 第三个查询只删除Temp_Table

每次要更新table2时,都必须按顺序运行这些查询。

现在您只需将查询(按正确顺序)放入宏中并运行该宏手册或打开数据库或运行任何您希望它运行的任何内容(当您按下表单上的按钮时)

这不完全是您想要的,但我希望它能帮助解决您的问题。