我尝试的是以编程方式将几个表从Microsoft SQL Server导入Microsoft Access。
每个SQL Server表都有一个标识列,以及相应的Access表,一个自动编号列。
现在我想生成SQL脚本以将数据从SQL Server复制到Access,并使autonumber colum与SQL Server中的值相同。
这可能吗?
从Access到SQL Server的另一种方式执行此操作时,使用SET IDENTITY_INSERT [MyTable] ON
和更高版本SET IDENTITY_INSERT [MyTable] OFF
可以非常轻松。
我发现Microsoft Access没有这样的声明。
此外,我尝试创建要导入的Access表,首先使用标识字段作为类型LONG
导入,然后使用ALTER TABLE ... ALTER COLUMN
语句切换到自动编号。我没有这样做。
所以我的问题:有没有办法实现我的目标?
答案 0 :(得分:5)
如果您使用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插入自动编号列
答案 1 :(得分:3)
假设您在MS Access数据库中可以看到SQL Server表(链接表)和MS Access表,以下是无代码执行此操作的过程。这些说明适用于Access 2013,因此虽然界面元素已移动,但这应该适用于2003年,2007年等。
您要导入的Access表应该没有任何数据。
*
字段。Access会告诉您要追加的记录数量 - 您可以使用此信息来验证您是否获得了所有数据。
如果您认为需要再次使用它来同步表格,则可以保存此查询。
如果你想获得想象力,可以创建一个删除查询,删除访问表中的所有记录,然后创建一个按以下顺序运行所有内容的宏:
答案 2 :(得分:0)
秘诀是暂时取消分配自动编号作为主键。这样可以毫无困难地将自动编号字段添加到您的记录中(只需确保在附加时没有任何重复项,否则当您重新分配主键时会出现错误)。