我知道这将是一个常见问题,但我找不到任何解决方案。
我将访问数据库迁移到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也知道主要的。在设计视图中虽然没有“自动编号”,但这可能是问题所在。但是如何解决呢?
答案 0 :(得分:3)
作为一般规则,在迁移到后端的SQL服务器之后,那么
的典型和常见的打开reocrdsetSet 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 括在方括号中,因为它是一个保留字。