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

Forms Visual Basic Access中使用ADODB连接和命令对象的可更新表单,forms,vba,adodb,recordset,Forms,Vba,Adodb,Recordset,我的任务是将现有的adp项目转换为accdb项目。我几乎完成了,但有一项功能我无法使用。我使用一个预制存储过程填充表单记录集,类似于下面的简单示例 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 ob

我的任务是将现有的adp项目转换为accdb项目。我几乎完成了,但有一项功能我无法使用。我使用一个预制存储过程填充表单记录集,类似于下面的简单示例

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
问题是表单中的大多数字段都是绑定的,因此用户可以更改数据或更改组合框中的项目。但是当试图编辑绑定控件时,我无法进行任何编辑,就像表单被锁定一样。我还尝试将forms recordset type属性设置为Dynaset(不一致更新),并将connection对象的mode属性设置为acModeReadWrite,但没有效果。有没有一种方法可以使用ADODB连接和命令对象来实现这一点


谢谢

我不确定是否可以使用绑定表单和严格的ADO(与链接表相反)来实现这一点。我以前用断开连接的记录集做过。其要点是,您需要在客户端打开一个记录集,将ActiveConnection设置为Nothing,将窗体的记录集设置为已填充数据的记录集,然后编写例程将数据绑定到控件。然后,您还必须编写例程,用服务器端记录集发回数据(所有CRUD内容)。可能需要一段时间,但它肯定可以工作。有很多关于断开连接的记录的文章。我不记得有太多的问题,这更多的是代码的推出,如果表单绑定,Access会自动为您做的几乎所有事情都需要时间。

MS现在建议使用链接表。@Remou,它没有那么大的重量,但我也一样:)。不像adp那么容易,但很接近。@Douglancy我想你会成为一名替补击球手:)