使用MS Access插入SQL Server

时间:2014-08-03 13:04:11

标签: sql-server vba ms-access access-vba

我知道这将是一个常见问题,但我找不到任何解决方案。

我将访问数据库迁移到SQL Server Express中。 SELECT和UPDATE运行良好,实际上使用Access引擎更好。但是我无法运行标准插入...

这不起作用:

Set rc = CurrentDb.openRecordset("SELECT * FROM DBLog WHERE false")
rc.AddNew
rc.update  '-->ERROR
rc.close

这也不起作用:

DoCmd.RunSQL("INSERT INTO [test2].dbo.DBLog (type) VALUES (6)")

这确实有效:     通过传递上面的SQL。所以它不是SQL Server问题。

我在数据库中设置了IDENTITY和PRIMARY。 Access也知道主要的。在设计视图中虽然没有“自动编号”,但这可能是问题所在。但是如何解决呢?

2 个答案:

答案 0 :(得分:3)

作为一般规则,在迁移到后端的SQL服务器之后,那么

的典型和常见的打开reocrdset
Set rst = CurrentDb.OpenRecordset("Contacts")

需要成为

Set rst = CurrentDb.OpenRecordset("Contacts", dbOpenDynaset, dbSeeChanges)

所以,在你的情况下:

Set rc = CurrentDb.openRecordset("SELECT * FROM DBLog WHERE false" dbOpenDynaset, dbSeeChanges)

答案 1 :(得分:1)

由于您有一个名为 DBLog 的链接表,因此我将对该链接表执行INSERT语句,类似于SQL Server本身的语句。

Dim db As DAO.Database
Dim strInsert As String
strInsert = "INSERT INTO DBLog ([type]) VALUES (6)"
Set db = CurrentDb
db.Execute strInsert, dbFailonerror

我将字段名称​​ type 括在方括号中,因为它是一个保留字。