将Access表转换为具有从相同数字开始的自动增量ID的SharePoint列表

时间:2019-02-07 18:33:47

标签: ms-access sharepoint

我需要将表格从ms Access数据库中移动到SharePoint列表。我需要移动的表已删除了具有ID自动递增的旧记录。我需要SharePoint列表从与表中相同的自动增量编号开始。

我尝试使用ms access导出到SharePoint列表功能,但是当我将表重新导入作为访问SharePoint列表的链接表重新访问时,ID开始回到1(而不是我上传的表中的81)到SharePoint)。

我需要将该表上传到SharePoint列表中,其自动增量ID从初始表中的81开始。

2 个答案:

答案 0 :(得分:1)

我理解阿尔伯特的逻辑,但有些不同意。我与一个客户合作了多年,该客户一直在其访问数据库中使用原始的自动编号字段作为客户的ID,因此他们的工作单,发票等都都在那里有客户的ID。如果您使用新创建的自动编号字段,那么所有客户ID都会更改为新编号。更糟糕的是,如果您按照Albert的建议使用第二个非自动编号字段,那么无论何时添加新客户,都需要使用sql语句(或查询)来确定第二个字段中最后使用的编号并将其递增1,因此它是唯一的。有点痛苦。

因此,解决方法仍然很麻烦,但是对于符合您实际要求的解决方案,您可以执行此操作。在SharePoint中使用自动编号字段创建新列表。在访问数据库中链接该列表。然后,使用原始数据查看表中的最高ID号(例如,最高客户ID)...,因为您需要在SharePoint列表中创建那么多行。您可以创建代码来循环创建x条记录,或者,如果您对此不满意,则可以创建具有这么多行的excel工作表。然后,将该Excel文件导入链接表。接下来,创建一个删除查询,以删除链接表中访问表中没有匹配ID(例如客户ID)的所有记录。这样,您将获得一个仅包含您正在使用的ID的链表,并且它仍在自动编号,因此会为新记录自动分配新编号。

就像我说的那样,这是一种变通方法。但这实际上可以满足您的要求,而不是被迫采用其他解决方案。

答案 1 :(得分:0)

如果该列是自动编号列,则在上载或迁移期间,这些自动编号可以更改。由于这些数字没有意义,因此这无关紧要。如果您有多个相关表,则必须确保在将数据移动到共享点之前正确建立了关系(因为SharePooint将重新编号这些值,因此子表和FK键ALSO也将正确更新)。但是,如果您不设置关系,那么您将破坏相关数据,因为SharePoint可以并且可以并且将重新编号已使用的PK。

如果希望保持相关表完整,则只能使用自动编号PK。您无法控制此重新编号,但是请注意,数据库中的编号一规则是这样的编号无论如何都没有关系。

如果您必须并且想要停止对该列的重新编号,则将数据类型更改为长号,而不是自动编号类型。然后当然只需添加另一个自动编号列。因此,要停止或阻止要更改的数字,必须将列从自动编号转换为标准的长数字列。 (编辑:因此,您还必须确保该列未标记为PK)。

请记住,如果任何其他表是与某些PK定义的关系的一部分,则作为相关数据一部分的任何其他表也将看到那些重新编号和更改的标准长号列。因此,Access在增大大小时将重新编号PK(自动编号),并且还将自动为您重新编号子表中使用的FK列。如果您不希望这样的重新编号发生,则PK和FK列不能成为已定义关系的一部分。

因此,删除自动编号列是防止此类重新编号的唯一方法。由于自动编号没有任何实际含义,因此如果在上载期间对其进行了更改,那么这无关紧要。