2014-01-21 53 views
0

我在MS Access中有一个定期更新的表。 这些更新发生后,导出完成,所以我可以得到一个Excel表格更新整个表。将新的Excel工作表行导入MS Access

但现在我需要做相反的事情。有些人会打开这个文档并手动添加行,并且我需要找到一些方法将这些新行添加到Access表中,并用标识符来说明它是否是手动输入的。

我的表格包含一个“学生”数据库。每行对应一个“名称”,所以当有人在工作表中手动添加一个新名称时,会有一个新学生,所以我需要将其行移到新表中的数据库中。我还需要那些手动输入的学生在不知何故发生变化时进行更新。

我怎么能在Access中做到这一点?下面的一些例子如下:

Access表 - 表1

 Name  | Country | Grades | IDNumber | Identifier 
---------------------------------------------------------------------------- 
Scott   | USA  | 8, 9, 10 |  1000  | Automatic 
Wolverine  | Indonesia | 2, 5, 7 |  2000  | Automatic 
Nightcrawler  | Brazil | 10, 0, 6 |  3000  | Automatic 
Jean Grey  | China  | 10, 10, 10 |  4000  | Automatic 
Bobby   | China  | 8, 7, 10 |  5000  | Automatic 
Kitty   | USA  | 9, 9, 9 |  6000  | Automatic 

Excel表单从访问表中导出:

 Name  | Country | Grades | IDNumber | Identifier 
---------------------------------------------------------------------------- 
Scott   | USA  | 8, 9, 10 |  1000  | Automatic 
Wolverine  | Indonesia | 2, 5, 7 |  2000  | Automatic 
Nightcrawler  | Brazil | 10, 0, 6 |  3000  | Automatic 
Jean Grey  | China  | 10, 10, 10 |  4000  | Automatic 
Bobby   | China  | 8, 7, 10 |  5000  | Automatic 
Kitty   | USA  | 9, 9, 9 |  6000  | Automatic 

与adicional数据Excel工作表,需要加以导入Access表:

 Name  | Country | Grades | IDNumber | Identifier 
---------------------------------------------------------------------------- 
Scott   | USA  | 8, 9, 10 |  1000  | Automatic 
Wolverine  | Indonesia | 2, 5, 7 |  2000  | Automatic 
Nightcrawler  | Brazil | 10, 0, 6 |  3000  | Automatic 
Jean Grey  | China  | 10, 10, 10 |  4000  | Automatic 
Bobby   | China  | 8, 7, 10 |  5000  | Automatic 
Kitty   | USA  | 9, 9, 9 |  6000  | Automatic 
Tempest   | Spain | 10, 9, 2 |  7000  | Manual <-- Who added will add the word "Manual" to it! 
Magneto   | USA  | 8, 0, 9 |  8000  | Manual 
Lizard   | India | 1, 3, 6 |  9000  | Manual 

表出现在附加到它的工作表中的新值 - 表2:

 Name  | Country | Grades | IDNumber | Identifier 
-------------------------------------------------------------------------- 
Tempest   | Spain | 10, 9, 2 |  7000  | Manual 
Magneto   | USA  | 8, 0, 9 |  8000  | Manual 
Lizard   | India | 1, 3, 6 |  9000  | Manual 

谢谢!

回答

1

您可以在Access中创建指向Excel电子表格的链接表。

Link to data in Excel

然后,您可以在Access中创建,抽出作为在Excel中的数据行的查询,不会出现在相应的Access表

Access表:

AccessTable.png

Excel工作表:

ExcelData.png

在Access链接表:

LinkedTable.png

查询设计:

QueryDesign.png

查询结果:

QueryResults.png

+0

谢谢,@Gord。有没有办法将一个固定值附加到列“标识符”(创建用于识别数据是否是手动的),为每个找到的行添加“手动”?像Gord行中的“Manual”值一样? – ZeldaElf

+0

@ZeldaElf你可以做些[this](http://i.stack.imgur.com/uy7Aw.png)。 –

+0

哇,真好!我会做的。如果我想在访问表中创建这些“自动”(即使所有的“标识符”值仍然为空),这很容易吗? – ZeldaElf

0

您可以使用链接表(将Excel导入为链接表,而不是数据)。这会导致它将Excel文档中所做的更改直接反映到您的Access环境中。

然后,每当你的愿望,你可以运行一个简单的SQL语句,因为这样的:

Insert Into [Students]([Name],[Country],[Grades],[IDNumber]) 
Select [Name],[Country],[Grades],[IDNumber] from [LinkedTable] 
Where [IDNumber] Not In (Select [IDNumber] from [Students]) 

假设的IDNumber是主键。