使用ADODB连接和命令对象在Visual Basic Access中更新表单

时间:2014-07-06 17:32:22

标签: forms vba adodb recordset

我的任务是将现有的adp项目转换为accdb项目。我差不多完成但是有一项功能我无法工作。我正在使用预制的存储过程填充表单RecordSet,类似于下面的简单示例。

Dim objConn As New ADODB.connection
Dim objCmd As New ADODB.Command

'Set up connection and command object
objConn.ConnectionString = "*Connection String Here*"
objConn.Open
objCmd.ActiveConnection = objConn
objCmd.ActiveConnection.CursorLocation = adUseClient
objCmd.commandText = "StoredProcName"
objCmd.CommandType = adCmdStoredProc

'Fill the recodset
Set Me.recordSet = objCmd.Execute

'Close connection
objConn.Close

问题是表单中的大多数字段都是绑定的,因此用户可以更改数据或更改组合框中的项目。但是在尝试编辑绑定控件时,我无法进行任何编辑,就像表单被锁定一样。我也尝试将表单记录集类型属性设置为动态集(Inconsistant Updates)并将连接对象的mode属性设置为acModeReadWrite,但无济于事。有没有办法使用ADODB连接和命令对象实现这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定你是否可以使用绑定表单和严格的ADO(与链接表相对)来执行此操作。我之前使用Disconnected Recordsets完成了它。它的要点是你需要打开一个记录集客户端,将ActiveConnection设置为Nothing,将表单的Recordset设置为你已经填充数据的记录集,然后编写例程来绑定数据对你的控件。然后,您还必须编写例程以使用服务器端记录集发送回数据(所有CRUD内容)。可能需要一段时间,但它绝对可以工作。有很多关于断开连接的recorsets的文章。我不记得太多陷阱,如果表单绑定需要花费时间,几乎所有Access都将自动为您完成代码的更多代码。