使用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连接和命令对象来实现这一点?
谢谢!
我不确定你是否可以用绑定的表单和严格的ADO(而不是链接表)来做到这一点。我之前用Disconnected Recordsets做过。其要点是您需要打开一个记录集客户端,将ActiveConnection设置为Nothing,将表单的Recordset设置为您将数据填充到的记录集,然后编写例程以将数据绑定到您的控件。然后,您还必须编写例程以将数据(所有CRUD内容)与服务器端记录集一起发回。可能需要一段时间,但它绝对可以工作。有很多关于断开连接的recorsets的文章。我不记得有太多的疑难杂症,如果表单绑定需要时间,那么几乎所有的Access代码都会自动为您执行代码。
严重不是一个好主意。 – Fionnuala
MS现在推荐链接表。 – Fionnuala
@Remou,它的重量没有那么大,但我也是如此:)。不像adp那么简单,但很接近。 –
@DougGlancy我想你会作为一个捏打者:) – Fionnuala