Изменить значение автономного номера Access - PullRequest
2 голосов
/ 10 апреля 2020

У меня есть устаревшая база данных Access. Код VB в нем нуждается в специальной записи со значением идентификатора автономного номера 1 в указанной таблице c.

В рассматриваемой таблице первичный ключ имеет номер автонумерации. Этот столбец также упоминается в других таблицах как внешний ключ. Вот почему я не могу удалить или изменить первичный ключ таблицы.

Я попытался сбросить счетчик с помощью

ALTER TABLE myTable ALTER COLUMN tId COUNTER(1,1)

Но он говорит, что я не могу изменить таблицу. И я не могу установить значение столбца вручную.

Как поместить указанное значение c в существующий столбец автонумерации первичного ключа?

1 Ответ

2 голосов
/ 10 апреля 2020

Вы можете использовать ADOX, чтобы изменить начальное значение поля автонумерации в Access:

Public Sub SetAutonumber(TableName As String, ColumnName As String, Seed As Long)
    Dim c As Object 'ADOX.Catalog
    Set c = CreateObject("ADOX.Catalog")
    Set c.ActiveConnection = CurrentProject.Connection
    c.Tables(TableName).Columns(ColumnName).Properties("Seed") = Seed
End Sub

Вызвать его, используя непосредственное окно:

SetAutonumber "MyTable", "tId", 1

И не забудьте сбросить его:

SetAutonumber "MyTable", "tId", DMAX("tId", "MyTable") + 1

Обратите внимание, что Access разрешает вставки в поле autonumber. Он доступен только для чтения через GUI, но запросы и VBA могут изменять его.

INSERT INTO myTable (tId) VALUES(1)

Это может обойти необходимость установки и сброса начального числа.

Также примечание: отрицательные автономные номера разрешены в Access (поля автономных номеров всегда подписаны), но никогда не происходят без ручной установки начального числа / установки их / искажения

...