2016-02-17 59 views
0

我一直在将我们的访问数据库转换为SQL,并在第2行有我的OpenRecordset语句的问题.. (此代码我用于其他SQL系统..现在只是不工作)令人沮丧 感谢您的任何帮助:) .. SQL有一个主键和标识字段。谢谢! Joe从Access使用SQL后端的OpenRecordset - “无效的参数”错误

strsql = "SELECT * FROM tbl_login" 
Set addrec = CurrentDb.OpenRecordset(strsql, dbOpenDynaset, dbSeeChanges) 
addrec.addNew 
addrec.loginname = "Joe2" 
addrec.Update 
addrec.Close 
+0

你在第2行遇到了什么问题? – Ageonix

+0

“不工作”......这是什么意思?你有错误信息吗?问题标题中是否显示错误消息?使用insert语句不是更简单吗? –

+1

如果在导航窗格中手动打开数据表视图中的'tbl_login',是否可以在其中添加新行? – HansUp

回答

1

你这样做是艰难的。你只需要这个:

strsql = "INSERT INTO tbl_login (loginname) VALUES ('joe2')" 
CurrentDB.Execute strsql, dbFailOnError 

使用Execute方法有一些额外的好处;例如,你不需要指定SetWarnings。此外,您可以捕获错误并保留其他信息。例如,你可以这样做:

strsql = "INSERT INTO tbl_login (loginname) VALUES ('joe2')" 
CurrentDB.Execute strsql, dbFailOnError 
Debug.Print CurrentDB.RecordsAffected & " records were added" 
+1

当你想'RecordsAffected'时,你可以直接使用设置为'CurrentDb'而不是'CurrentDb'的对象变量。 'CurrentDB.RecordsAffected'总是给你零。 – HansUp

+1

如果原始代码失败,当然也会使用相同的值。这个问题在别处。 – Gustav