问题描述
好的,这应该很简单,所以令人困惑的是它不是。我正在从 Excel 中复制一个非常基本的数据并将其粘贴到 Access 数据库中。那么为什么值和有时整个记录都消失了?
详细信息:我在 Windows 7 中使用 Access 2016,将数据从分包实验室提供的 Excel 工作簿导入到我们的数据库中。实验室并不总是使用完全相同的格式来报告他们的结果,因此直接从 Excel 导入变得不可靠。我很想使用附加查询,但如果数据位于它应该在的位置右侧的一列,它们的效果会很差。
相反,我有一个凌乱的小临时表,没有主键和五个字段,都是短文本和一些 VBA 来验证、整理和正确导入它。从 Excel 复制,粘贴附加到 Access 和...WTF?!?字段粘贴为空值。偶尔记录会消失。没有粘贴错误表,没有错误信息。只是数据没了!
缺失数据有一定规律。我有 5 个字段,前两个总是文本,接下来的两个总是数字,最后一个字段有时是数字,有时是文本。不出所料,问题出在最后一个字段中。如果第 5 个字段中的所有数据都是数字,则一切正常。同样,如果所有数据 n 字段 5 都是文本。 当某些记录中的数字数据和其他记录中的文本混合在一起时,数据就会消失,而是将文本作为空值粘贴进来。如果第一条记录包含字段 5 中的文本,它将完全丢失。
为什么?!?这应该是最简单的部分!具有讽刺意味的是,VBA 工作正常。
我尝试过的修复:
-
将 Excel 工作簿转换为 CSV 以避免在 Excel 端出现隐藏格式或类似的无用问题。
去除潜在的麻烦字符。虽然不是特殊或保留字符,但“
-
将字段更改为长文本,使其成为必需,或设置主键。文本值仍然作为空值粘贴,如果设置为“必需”,则将整个记录分流到粘贴错误表。
-
一次导入一个记录。这实际上确实有效,因为数据可以正确粘贴,但在处理 1000 多条记录时不太理想。它确实表明问题不在于数据库的结构。
任何帮助将不胜感激。
解决方法
我终于找到了the answer。这是 Excel、Access 或剪贴板中某个地方的一个鲜为人知的错误,至少自 2007 年以来似乎一直存在。字段中同时包含文本和数字数据的记录将在粘贴附加到文本字段时丢失文本数据。>
1,2,3,4
5,6,7,apple
8,9,10,11
12,13,14,berry
15,16,17,18
将 Excel 中的附加内容粘贴到 Access 中
1,7
8,14
15,18
“解决方案”是在粘贴追加之前关闭 Excel。这种黑暗的仪式将导致数据正确追加。我不知道为什么会这样,但已经用我自己的数据库确认过。