从 Excel 数据更新 Access 表中的数据和关系
Posted
技术标签:
【中文标题】从 Excel 数据更新 Access 表中的数据和关系【英文标题】:Update data and relationships in Access table from Excel data 【发布时间】:2014-04-24 19:56:16 【问题描述】:所以我从 Excel 中导入数据,并使用 DoCmd.TransferSpreadsheet
从它们那里获得的数据创建新表。我想要做的是让这些新表在我导入它们时替换我的数据库中的旧表,同时保持关系完好无损,这样我就可以用一个按钮完全自动化这个过程。由于不断添加和删除数据,我认为 UPDATE 查询方法不会起作用(尽管我可能是错的,因为我对 SQL 比较陌生)。我希望有一种方法可以删除表中的所有数据,然后使用 VBA 从新表中重新填充。这可能吗?
【问题讨论】:
是的,这是可能的。不确定现有表是如何相关的,但您始终可以删除现有数据,然后追加新数据。 1. 是否要删除三个现有表中的所有行? 2. 从 Excel 导入的列是 Access 所需要的吗? 这些表有一个一对多的关系链接它们,没有什么复杂的。是的,我想删除现有表中的所有内容。是的,从 Excel 导入的是我在 Access 中需要的所有数据。我很感激你能给我的任何帮助。 【参考方案1】:假设您的表被命名为“T1”、“T2”、“T3”,并且按关系顺序排列,请尝试以下作为一种可能的解决方案。只需在导入代码之后添加此代码(更改表名):
Dim strSQL As String
strSQL = "delete * from T3;" ' Delete all existing rows
CurrentDb.Execute strSQL
strSQL = "delete * from T2;"
CurrentDb.Execute strSQL
strSQL = "delete * from T1;"
CurrentDb.Execute strSQL
' Insert new rows from imported tables.
strSQL = "INSERT INTO T1 SELECT Import1.* FROM Import1;
CurrentDb.Execute strSQL
strSQL = "INSERT INTO T2 SELECT Import2.* FROM Import2;
CurrentDb.Execute strSQL
strSQL = "INSERT INTO T3 SELECT Import3.* FROM Import3;
CurrentDb.Execute strSQL
【讨论】:
感谢代码!对于 3 张桌子中的 2 张,它完全符合我的要求……不幸的是,第三张桌子现在让我很伤心。出于某种原因,当我尝试在最后一个表上使用插入函数时,它执行得很好,但是当我打开表时它完全是空白的。我已经确认两个表的数据类型相同,并且新表正确填充,现有表只是没有获取新数据。有什么建议吗? 尝试手动运行 SQL,看看是否有任何错误。其他想法:(a) 是否有任何必须评估的关系(即另一个表中是否需要所有者记录?)(b) 是否需要任何字段验证但失败?以上是关于从 Excel 数据更新 Access 表中的数据和关系的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 Excel 导出到 Access - 错误:参数不是可选的
如何在从 Excel 导入的表中的 Access 中分配外键
通过 Excel 用户窗体编辑 Access 数据库时跟踪更改(创建审计跟踪)