对帐Ms Access记录VBA并生成错误消息

时间:2013-11-21 20:50:00

标签: excel ms-access access-vba excel-2010 ms-access-2010

我要求对excel表和&之间的记录进行对帐。 MS访问2010表,在不同的列中具有相同的数据。需要在唯一ID的帮助下基于来自MS访问的值验证Excel工作表,并在MS访问报告中生成该唯一ID的错误消息,如下面的格式。 / p>

目前我已根据以下架构创建了一个表并将其映射到报表。现在我需要比较记录并填写下表中的错误消息。

我是VBA的新手,请帮助我采用最佳方法,没有性能容忍度,比如避免多次循环..

  

表架构:员工

员工ID,员工姓名,员工薪酬

1,测试仪,5000

  

Excel工作表架构:员工

ID,姓名,薪水

1,测试仪,4000

  

所需的输出报告:ACCESS 2010女士

文件名,唯一ID,列名,差异

员工,1,工资,访问工资< 5000>与Excel工资单< 4000>

不同

1 个答案:

答案 0 :(得分:0)

您可以在不使用任何VBA的情况下实现所需的结果。首先在Access中创建一个指向Excel数据的链接表。详细说明可在此处找到:

Import or link to data in an Excel workbook

我将我的链接表[ExcelData]命名为,所以当我在Access中打开它时,它看起来像这样:

ExcelData.png

要执行对帐,我们需要做的就是创建一个这样的查询:

reconcile.png

请注意,第四列的Field:值为

Difference: "Access salary <" & [Employee].[Employee Salary] & "> is different from Excel sheet salary <" & [ExcelData].[Salary] & ">"

作为参考,该查询的整个SQL语句是

SELECT 
    "Employee" AS [File Name], 
    Employee.[Employee ID] AS [Unique ID], 
    "Salary" AS [Column Name], 
    "Access salary <" & [Employee].[Employee Salary] & "> is different from Excel sheet salary <" & [ExcelData].[Salary] & ">" AS Difference
FROM 
    Employee 
    INNER JOIN 
    ExcelData 
        ON Employee.[Employee ID] = ExcelData.ID
WHERE (((Employee.[Employee Salary])<>[ExcelData].[Salary]));

该查询返回以下内容:

reconciliation.png