Есть TRUNCATE в Access?

У меня есть таблица в базе данных Access с полем autonumber.

Когда я удаляю все записи из таблицы, автономер запоминает последний номер.

Имеет ли Access нечто похожее на SQL Server TRUNCATE TABLE MyTbl?

Если нет, как начать с 1 после удаления записей таблицы?

Ответ 1

Доступ SQL не имеет ничего подобного TRUNCATE TABLE.

Вы можете использовать ADO-соединение для выполнения оператора DDL, который сбрасывает значение "семя" поля autonumber. Таким образом, вы можете сделать это с помощью кода VBA и не использовать компактный и восстанавливать до reset автономера.

Этот примерный код сначала удаляет все строки из моей таблицы tblFoo, а затем сбрасывает начальное значение для поля id autonumber.

Dim strSql As String
strSql = "DELETE FROM tblFoo;"
CurrentProject.Connection.Execute strSql
strSql = "ALTER TABLE tblFoo ALTER COLUMN id COUNTER (1, 1);"
CurrentProject.Connection.Execute strSql

Ответ 2

потребовалось 1 секунду, чтобы найти решение по адресу:

http://www.webmasterworld.com/databases_sql_mysql/3227574.htm

Процесс Compact и Repair будет reset пустым столом счетчики автоинкремента до нуля. Итак, удалите все записи:

Инструменты → Утилиты баз данных → Компактная и восстановительная база данных

Ответ 3

Там нет усечения в MS Access, насколько я знаю, но вы можете решить проблему с автоматическим номером, помня о последнем номере после удаления. Там в MS Access можно начать с 1 после удаления записей с полем автоматического номера. Если вы используете , вы можете найти Компактная и восстанавливающая база данных, выбрав "Управление", расположенную под кнопкой "Офис". Вы также можете скомпилировать свою базу данных и восстановить ее каждый раз, когда она будет закрыта, активировав опцию Compact on Close. Если вы хотите установить этот параметр, вы можете найти его в Параметры доступа для текущей базы данных.

enter image description here

Ответ 4

Или без компактности и ремонта:

Очистите таблицу:

DELETE FROM MyTable

Изменить значение autoincrementfield (например, 'ID') для Integer:

ALTER TABLE MyTable ALTER Column ID INT;

Верните поле обратно в AUTOINCREMENT:

ALTER TABLE MyTable ALTER Column ID AUTOINCREMENT;

Ответ 5

Существует другой способ, который не требует изменения таблицы или уплотнения и ремонта. Он будет работать лучше для вас, если у вас есть распределенная база данных. Начиная с 2000 года Access примет значение вставки в поле автонабора и начнет увеличивать его. Сделайте это в запросе или в коде, подобном этому.

CurrentProject.Connection.Execute "DELETE FROM Mytbl"
CurrentProject.Connection.Execute "INSERT INTO Mytbl(ID) VALUES(0)"
CurrentProject.Connection.Execute "DELETE FROM Mytbl"

Примечание. Поместите adExecuteNoRecords после выполнения команды для повышения производительности. например CurrentProject.Connection.Execute sql, adExecuteNoRecords

Ответ 6

Удалите все записи, а затем скомпилируйте базу данных.

Ответ 7

Или без Compact и Repair при использовании VBA: Скажите, что ваш стол "MyTable" . Сделайте копию этой таблицы БЕЗ данных и сохраните ее, например, как "MyTable_Template". Если вы хотите обрезать таблицу, просто "DROP" в таблице en скопируйте "MyTable_Template" в "MyTable" . Теперь автоинкрементное поле вашей "новой" таблицы "MyTable" начнется с 1 снова.

Ответ 8

В базе данных MS_Access "Truncate не поддерживается". Поэтому мы можем сначала удалить все записи с помощью запроса "Удалить".

После удаления записей мы можем изменить столбец "Идентификатор", начиная с 1, используя запрос "Alter".

Query:

  "Delete * from (Your Table Name); 
  Alter Table (Your Table Name) Alter Column (Your Column Id) Counter(1,1);"

Используя эти два запроса в одном исполнении, мы можем удалить все записи и reset идентификатор столбца начинается с 1.

Ответ 9

Я тоже такая же проблема, что и я, я возвращаюсь к таблице в режиме модификации. Затем я удалил имя поля с помощью autonumber и снова вставил его с тем же именем. Результат автонабора при запуске в режиме просмотра возвращался к номеру первой записи.