Код VBA для добавления номера в последовательности и рядах данных - PullRequest
0 голосов
/ 03 июля 2018

Я конвертирую старую базу данных Access 2010 в Access 2016, база данных изначально создавалась в Access 2000. В моей таблице клиентов использовалось поле autonumber , чтобы сгенерировать число CustomerId.

Я использовал это поле для подключения к моей таблице ремонта, в которой на данный момент хранится 13 000 записей. Мне не удалось отыскать возможность сохранить это поле в новой базе данных, поэтому я подумал, что если я смогу экспортировать таблицу в файл Excel, чем добавить числа в последовательности отсутствующих идентификационных номеров вместе с данными, чтобы заполнить поля имени и адреса для временного импорта в новую базу данных, после импорта я могу удалить эти поля.

Я не знаю, есть ли другие способы сохранить этот идентификатор. Я импортировал таблицу клиентов с именем поля «Старый идентификатор», но доступ не позволяет мне использовать это поле для создания связей с новой таблицей исправлений.

Идентификационные номера варьируются от 1 до 8 437, но в электронной таблице всего 7 884 записи.

1 Ответ

0 голосов
/ 03 июля 2018

Лучший способ переупорядочить идентификаторы - воспользоваться «Полями каскадного обновления».
Что вам нужно будет сделать, это

  • Удалить все связи с вашей таблицей
  • Измените поле идентификатора на Число - Длинное целое
  • Добавьте отношения обратно, сообщая каскадные обновления
  • Сдвинуть все индексы на число, превышающее текущий максимальный идентификатор
  • перенумеровать, начиная с 1
  • Удалить все отношения
  • Удалить поле идентификатора
  • Сохранить таблицу
  • Добавить поле идентификатора обратно как автоинкремент - первичный ключ
  • Добавить отношения обратно

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...