【问题标题】:MS Access Form bound to ADO recordset refresh and filter errorMS Access Form 绑定到 ADO 记录集刷新和过滤错误
【发布时间】:2021-03-09 13:10:05
【问题描述】:

我使用 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),我始终能够在表单中编辑和添加记录。

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

【问题讨论】:

    标签: ado


    【解决方案1】:

    广告。 1 看到这个https://codekabinett.com/rdumps.php?Lang=2&targetDoc=sort-filter-access-form-bound-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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      相关资源
      最近更新 更多