VBA代码按顺序和数据行添加数字

时间:2018-07-03 17:08:32

标签: vba excel-vba ms-access excel

我正在将旧的2010 Access数据库转换为Access 2016,该数据库最初是在Access 2000中构建的。我的客户表使用自动编号字段来生成CustomerId数字。 / p>

我使用此字段连接到我的维修表,该表目前有13,000条记录。我一直无法找到在新数据库中维护此字段的方法,因此我想是否可以将表导出到Excel文件,而不是按顺序添加缺少ID号的数字以及填充临时导入的名称和地址字段的数据导入新数据库后,我可以删除这些字段。

我不知道是否还有其他方法可以维护此ID。我使用旧ID字段名导入了客户表,但是访问不允许我使用此字段来创建与新维修表的关系。

ID号从1到8,437,但电子表格中只有7,884条记录。

1 个答案:

答案 0 :(得分:0)

重新排列ID的最佳方法是利用“级联更新相关字段”。

  • 删除所有与表的关系
  • 将“ ID”字段更改为“数字-长整数”
  • 重新添加关系,强制进行级联更新
  • 将所有索引移位到大于当前最大ID的数字
  • 比从1开始重新编号
  • 删除所有关系
  • 删除ID字段
  • 保存表格
  • 将ID字段重新添加为自动递增-主键
  • 重新添加关系

enter image description here

enter image description here

ReImcrementCustomerIDs:Sub

Option Compare Database
Option Explicit

Public Sub ReImcrementCustomerIDs(ByVal FirstIndex As Long)
    Dim rs As DAO.Recordset
    Dim db As Database
    Dim SQL As String
    Dim ID As Long
    Set db = CurrentDb

    SQL = "SELECT CustomerID FROM Customers ORDER BY CustomerID;"

    Set rs = db.OpenRecordset(SQL, dbOpenDynaset)

    Do While Not rs.EOF
        rs.Edit
        rs("CustomerID") = FirstIndex
        FirstIndex = FirstIndex + 1
        rs.Update
        rs.MoveNext
    Loop
End Sub

用法

ReImcrementCustomerIDs 50000
ReImcrementCustomerIDs 1