2013-09-11 2 views
1

Я разрабатываю приложение в Access с помощью vba. Я не буду вставлять временную таблицу в другую таблицу под названием «Отчеты». Таблица Reports имеет идентификатор с автоматическим приращением. Теперь моя временная таблица не имеет идентификатора. Поэтому я думал, что Access автоматически изменит идентификатор отчетов после последнего идентификатора. (так что новая строка получит ID = 2, когда последний ID = 1). Но когда я запускаю свою вставку в оператор Access, генерирует идентификатор более 5500000, а не предыдущую запись. Кто-нибудь знает, что вызывает эту проблему?большое число для id со вставкой в ​​оператор

strSql = "INSERT INTO Reports SELECT * FROM tblTemp;" 
CurrentDb.Execute strSql 

Thx за помощью

Edit: только что узнал, что он делает это слишком, когда я просто добавить запись

ответ

1

Список имен полей в Reports, которые будут получать данные. Опустите поле ID из этого списка, и пусть двигатель db предоставит значение автонабора.

Например, если Reports содержит следующие поля: ID; fld2; и fld3 ...

INSERT INTO [Reports] (fld2, fld3) SELECT fldA, fldB FROM tblTemp; 

Примечание:

  1. Reports является reserved word, так что я в квадратных скобках, что имя, чтобы избежать запутывая дб двигатель.
  2. Если вы заботитесь об исходном значении autonumber, и теперь оно находится на уровне 5500000 даже после удаления всех строк Reports, скомбинируйте базу данных, чтобы сбросить начальное значение на одно больше, чем наибольшее значение ID.
+0

Я нашел его. Я получил данные от импорта excel, если бы я не определял идентификатор, потому что я думал, что доступ делает это автоматически. Доступ делает это, но когда вы добавите новую запись, это даст вам идентификатор более 500000. Все еще не знаю почему, но моя проблема решена. Но все равно спасибо – Vinny

Смежные вопросы