将 Excel 中的两列导入现有的 Access2010 表中使用转移电子表格时出错
Posted
技术标签:
【中文标题】将 Excel 中的两列导入现有的 Access2010 表中使用转移电子表格时出错【英文标题】:Import two columns from Excel into existing Access2010 table gives error using transferspreadsheet 【发布时间】:2016-04-26 06:59:42 【问题描述】:我有一个excel电子表格,有12列,我只需要根据最后两列导入数据(剩下的需要填写最后一列。)
Excel table
Acces table
如图所示,我在 Access 中有一个名为“ProjektDelledning”的表,其中 DelledningID 和 SaneringsmetKode 两列已经存在。如果 DelledningID 已经存在,则需要更新 SaneringsmetKode,如果表中不存在,则需要添加该值。所以 Delledning 258 应该在导入后在 Acces 中有一个 SaneringsmetKode = 1 等等。
到目前为止,我已经尝试过使用这个:
Public Function Import2Columns()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "ProjektDelledning", "C:\Users\JGJ\Desktop\Sanering.xlsx", True, "Concatenate!L:M"
End Function
我收到一条错误消息,提示 Access 无法将所有数据附加到表中。删除了 0 个记录中的字段内容,并且由于密钥违规而丢失了 0 条记录...
值得注意的是,在Access表中,ProjektID和DelledningID都是key。
关于如何使用转移电子表格或其他方法正确导入的任何帮助。我想使用宏进行导入。
【问题讨论】:
您的图片已被禁止查看。 道歉。现在应该修好了。 【参考方案1】:一种方法可以是导入临时表(或只是链接范围)。
然后,使用它,运行组合的更新/追加查询。
Smart Access 中的这个旧技巧是我的最爱之一:
一次查询更新和追加记录
艾伦·比格斯
您知道吗?您可以在 Access 中使用更新查询来访问两者 同时更新和添加记录?这很有用,如果你有 表的两个版本,tblOld 和 tblNew,并且您想要集成 从 tblNew 到 tblOld 的变化。
按照以下步骤操作:
创建更新查询并添加两个表。通过将 tblNew 的键字段拖到 tblOld 的匹配字段上来连接两个表。
双击关系并选择包含来自 tblNew 的所有记录以及仅与 tbl旧的。
从 tblOld 中选择所有字段并将它们拖到 QBE 网格中。
对于每个字段,在更新到单元格中输入 tblNew.FieldName,其中 FieldName 与 tblOld 的字段名称匹配。
从视图菜单中选择查询属性并将唯一记录更改为 False。 (这会关闭 SQL 中的 DISTINCTROW 选项 看法。如果你留下这个,你只会在你的 结果,但您希望为每个要添加的新记录添加一个空白记录 到 tblOld。)
运行查询,您将看到对 tblNew 的更改现在位于 tblOld 中。
这只会将已添加到 tblNew 的记录添加到 tblOld。 tblOld 中不存在于 tblNew 中的记录仍将保留在 tblOld。
【讨论】:
试过你的描述,但不确定我是否正确。当我运行更新查询时,它要求更新 28 行(这是正确的),但是当我按 Ok 时,它会给出一条错误消息,指出由于违反验证规则而无法更新 5 条记录。 UpdateQuery 正确更新了 22 条记录。 我相信您还需要两个 SaneringsmetKode 之间的关系。复合键。 设法让它工作,数据键之间存在不匹配,它不会接受 Null 值,所以对于那些我做了一个将 Null 更改为 0 的 Iif。现在它可以工作了。还有一个问题,我可以运行此更新并从宏中追加查询吗? 是的。使用有意义的名称保存查询。然后创建一个新宏并选择一个宏命令,如“运行操作查询”并指定查询的名称 - 因为我不使用宏,所以不记得确切的措辞。以上是关于将 Excel 中的两列导入现有的 Access2010 表中使用转移电子表格时出错的主要内容,如果未能解决你的问题,请参考以下文章