首页 > 解决方案 > MS Access Form 绑定到 ADO 记录集刷新和过滤错误

问题描述

我使用 Access 作为 SQL Server 的前端,并尝试使用 ADO 记录集作为 Access Form 的源。我能够在数据表视图中查看记录,我可以在该表单上添加和编辑记录。

现在,当我尝试将文本或数字过滤器应用于数据表视图中的 ADO 记录集绑定表单或尝试刷新表单时,我遇到了 2 个错误。

  1. 如果我在数据表视图中使用字段过滤器,则会收到错误消息:“输入有效值”
  2. 如果我尝试使用 F5 键刷新表单,则会收到错误消息:“无法初始化数据提供程序”

如果我使用 SQL Server 的链接表并将这些表用作表单的记录源,则不会出现所描述的问题。

这是我用来设置表单记录集的代码:

Private Sub Form_Load()


Dim ConnString As String
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset


ConnString= "Provider=sqloledb;Server=xxx; Database=yyyyy; user Id=zzzz; password=uuuu;"

     Set cnn = New ADODB.Connection
     cnn.ConnectionString = ConnString
     cnn.Open
     Set rs = New ADODB.Recordset


rs.CursorLocation = adUseClient
rs.Open "select Field1, Field2, Field3 from dbo.TableA", cnn, adOpenStatic, adLockPessimistic
Set Me.Recordset = rs

End sub

同样有趣的是,无论我使用什么 cursorType(本例中为 adOpenStatic),我总是能够在表单中编辑和添加记录。

是否可以将 Access 功能(过滤器、刷新)与 ADO 记录集一起使用?

标签: ado

解决方案


广告。1 看到这个https://codekabinett.com/rdumps.php?Lang=2&targetDoc=sort-filter-access-form-b​​ound-adodb-recordset

广告。2 在 Form_Error 上使用这个:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    Const NO_DATA_SUPPLIER As Integer = 31
    If DataErr = NO_DATA_SUPPLIER Then  
        Response = acDataErrContinue
        'in this line you have to reasign your datasource for form
    End If
End Sub

推荐阅读