Ms Access,使用Excel修改表格; 处理ID自动编号

TLDR:我在问题的最后总结了这个长期的问题。

我的公司正在使用正确设置关系,PK和FK的Ms Access数据库。 我有时必须对表进行重大修改(添加字段,进行列操作,你知道,我相信只有Excel可以做的东西:string操作(左,右等),索引/匹配(VLOOKUPS),自动填充领域等…

我所做的就是将表格导出到Excel中进行修改。 当我完成后,我的问题就出现了,我想导入表格。 我遇到了Access ID中的ID和AutoNumberfunction问题。 当我导入表时,我不能使用以前的ID列,必须做一个新的,以便我可以获得一个工作自动编号ID列。 问题是,如果logging的顺序或logging的数量发生了变化(即,如果某些logging被删除),那么新的自动生成的ID将不会与旧的相同,从而产生问题与我的关系。 FKs不会指向正确的PKs了。

我试图寻找解决这个问题的方法,但没有find任何东西,好像没有其他人有这个问题。 我想我可能做得不对。

短版本:当我导出表Access-Excel时,PK / FK问题。 在导入过程中,我不能重复使用我的初始PK列作为自动编号,因此我创build一个新的ID自动编号列,导致一些ID将会改变的问题,创build与FKs(关系)的问题。

假设您添加的新字段是一次性(或不频繁)操作,请先在现有的表中手动创build这些字段。 将所有新数据(用户名,angular色和其他属性)导入到临时表中。 然后使用更新查询来获取相关数据到原始表中的新列,根据您在Excel中完成的任何匹配,将两个表连接起来。 你可以在导入之前在Excel中的新数据中进行所有的string操作,如果你对此更加熟悉的话,但是临时的新数据表必须有一两列可以完全匹配你现有表中的某些东西,执行更新。

同步期间的PK / FK问题通常通过将所有需要的数据从Excel导入临时表而不是自动编号ID列来解决,然后执行3个查询:

  • 更新logging,其中ID是相同的
  • 如果源中不存在目标ID,则删除目标表中的行
  • 如果目标中不存在源ID,则将行插入到目标表中

如果您确定,导入的ID数据是唯一的,则可以使用INSERT SQL在自动编号字段中插入ID,但这不是一个好的解决scheme。 Excel ID使用单独的密钥列会更好。

至于多列的问题,可以考虑使用一个具有Attribute-Value列的表。 在这种情况下,你有多less属性并不重要。

Excel对于从用户收集信息和进行主要数据分析是很好的,但主要的计算是在Access中做的更好,它具有非常强大的工具。 使用查询,表单和VBA可能几乎全部实现,在Excel中可以做什么等等