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

问题描述:

我一直负责将现有的adp项目转换为accdb项目。我差不多完成了,但有一件功能我无法工作。我正在使用预制存储过程填充表单RecordSet,类似于下面的简单示例。使用ADODB连接和命令对象的Visual Basic Access中的可更新表单

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 

问题是表单中的大部分字段都是绑定的,以便用户可以更改数据或更改组合框内的项目。但是当试图编辑绑定控件时,我不能进行任何编辑,比如表单被锁定。我也尝试将表单记录集类型属性设置为Dynaset(Inconsistant Updates),并将连接对象的模式属性设置为acModeReadWrite,但无济于事。有没有办法使用ADODB连接和命令对象来实现这一点?

谢谢!

+1

MS现在推荐链接表。 – Fionnuala

+0

@Remou,它的重量没有那么大,但我也是如此:)。不像adp那么简单,但很接近。 –

+1

@DougGlancy我想你会作为一个捏打者:) – Fionnuala

我不确定你是否可以用绑定的表单和严格的ADO(而不是链接表)来做到这一点。我之前用Disconnected Recordsets做过。其要点是您需要打开一个记录集客户端,将ActiveConnection设置为Nothing,将表单的Recordset设置为您将数据填充到的记录集,然后编写例程以将数据绑定到您的控件。然后,您还必须编写例程以将数据(所有CRUD内容)与服务器端记录集一起发回。可能需要一段时间,但它绝对可以工作。有很多关于断开连接的recorsets的文章。我不记得有太多的疑难杂症,如果表单绑定需要时间,那么几乎所有的Access代码都会自动为您执行代码。

+0

严重不是一个好主意。 – Fionnuala