Сохранять значение столбца autonumber при импорте в базу данных Microsoft Access - PullRequest
2 голосов
/ 30 июля 2010

Я пытаюсь программно импортировать несколько таблиц из Microsoft SQL Server в Microsoft Access.

Каждая таблица SQL Server имеет столбец идентификаторов и соответствующие таблицы Access, а также столбец автономного номера.

Теперь я хочу сгенерировать сценарии SQL, чтобы скопировать данные из SQL Server в Access и иметь для столбца autonumber то же значение, что и для сервера SQL.

Возможно ли это?

Когда вы делаете это иначе, чем Access to SQL Server, это довольно просто, используя SET IDENTITY_INSERT [MyTable] ON и позже SET IDENTITY_INSERT [MyTable] OFF.

Я обнаружил, что для Microsoft Access такого заявления нет.

Кроме того, я попытался создать таблицы Access для импорта сначала с полем идентификатора типа LONG, а затем с помощью оператора ALTER TABLE ... ALTER COLUMN переключиться на автонумерацию. Я потерпел неудачу в этом.

Итак, мой вопрос: Есть ли способ достичь моей цели?

Ответы [ 3 ]

5 голосов
/ 30 июля 2010

Если вы используете Insert Into и указываете все имена столбцов в MS Access, оно должно работать.

Я только что создал таблицу со следующей структурой

Id (autonumber)
Firstname (text)
Secondname (text)
Lastname (text)

Я выполнил этот оператор

docmd.RunSQL "insert into table2 (id, firstname, secondname, lastname) values (27, 'a', 'b', 'c')"

Сработало и вставило 27 в столбец автонумерации

3 голосов
/ 11 октября 2013

Предполагая, что вы можете видеть и таблицы SQL Server (связанные таблицы), и таблицы MS Access, находясь в базе данных MS Access, вот процедура, чтобы сделать это без кода.Эти инструкции предназначены для Access 2013, поэтому, хотя элементы интерфейса были перемещены, это должно работать для 2003, 2007 и т. Д.

В таблице Access, в которую вы импортируете, не должно быть никаких данных.

  1. Закрыть все объекты доступа (таблицы, запросы, отчеты и т. Д.)
  2. Щелкните Инструменты базы данных на ленте.
  3. Необязательно: Нажмите Сжатие и восстановление (при этом счетчики AutoNumber возвращаются в 0 на пустых таблицах)
  4. Нажмите Создать в меню.
  5. Нажмите Запрос дизайна на ленте.(открыто диалоговое окно «Показать таблицы»)
  6. Добавьте исходную таблицу SQL Server к запросу.
  7. Закройте диалоговое окно Показать таблицы .
  8. Нажмите кнопку Append Query на ленте.
  9. Выберите таблицу доступа , в которую вы хотите импортировать данные , и нажмите OK.
  10. В таблице SQL Server дважды щелкните любые поля, которые вы хотите импортировать, или дважды щелкните поле *, если имена всех столбцов совпадают и вы хотите импортировать все поля.
  11. Для каждого полядобавленный в запрос на добавление ниже, проверьте, что все поля соответствуют полю в таблице доступа .Если нет, то в атрибуте Append To каждого поля выберите поле в Access, которое должно получать данные от SQL Server.
  12. Нажмите кнопку Run налента.

Access сообщит вам, сколько записей вы собираетесь добавить - вы можете использовать эту информацию, чтобы убедиться, что вы получаете все свои данные.

Вы можете сохранить этот запросесли вы думаете, что вам нужно будет использовать его снова для синхронизации таблиц.

Если вы хотите стать модным, вы можете создать запрос на удаление, который удалит все записи в таблице доступа, а затем создать макрос, которыйзапускает все в следующем порядке:

  1. Удаление записей
  2. Сжатие и восстановление базы данных
  3. Запуск импорта из SQL Server
0 голосов
/ 18 июля 2015

Секрет в том, чтобы временно отменить назначение номера в качестве первичного ключа. Это позволяет без проблем добавлять поле AutoNumber Field в ваши записи (просто убедитесь, что у вас нет дубликатов при добавлении, в противном случае при повторном назначении первичного ключа вы получите ошибку).

...