【问题标题】:Ms Access 2010 Recordset will not bind to combobox on some machinesMs Access 2010 Recordset 不会绑定到某些机器上的组合框
【发布时间】:2014-07-12 20:32:18
【问题描述】:

我有一个 access 2010 数据库,它是一个 access 2007 数据库。它使用网络服务器上的第二个数据库。

我在 windows 7 32bit 上开发。

下面是我继承的代码...

我遇到的问题是,虽然数据集绑定到组合框 (Combo96) 对我来说在“开发模式”和“运行模式”下都很好,而且在另一台 Windows 7 32 位机器和另一台 Windows 7 上也可以正常工作64位机器。它拒绝在一台 Windows 32 位机器上工作。

我猜它的引用有问题?我所知道的目标(失败)机器是windows 7,它有access 2010运行时,它可能有access 2007或access 2007运行时,我真的没有办法找出来。

我在底部添加了获取数据集并将其复制到组合框的代码。这在所有机器上都可以正常工作,但需要更长的时间。

任何想法为什么数据集不会在某些机器上绑定到 combo96?

On Error GoTo err_hand

Dim SearchStr As String
Dim oRec As ADODB.Recordset

Combo96.RowSource = ""
txtSearch.SetFocus
SearchStr = Trim(txtSearch.text)


Set oRec = New ADODB.Recordset ' [Client Number],

strQuery = "SELECT  replace(replace([Company],"","","""" ),"":"","""") as [Companys]  FROM tblClient  where company <> '' ORDER BY [Company] "
oRec.Open strQuery, Load_ribbon.get_Connection, adOpenKeyset, adLockOptimistic

Me.Combo96.RowSourceType = "Table/Query"
Set Me.Combo96.Recordset = oRec
oRec.Close


err_endit:
Set oRec = noting
Exit Sub

err_hand:

Call sendReport.SendErrorDetail("CMP-0701-" & Erl, "Can't Read [Clients] Data SRC-" & SearchStr & "-" & Err.Description & "-" & Err.Number)

' Here comes some Cheese!!!!
On Error GoTo Skippy
' Bounding probably failed Try manual
If Not (oRec Is Nothing) Then
    If oRec.RecordCount > 0 Then
        If oRec.RecordCount > 1000 Then
            MsgBox ("Too amany records found please be more specific")
        Else
          Me.Combo96.RowSourceType = "Value List"
            oRec.MoveFirst
            Do While Not RS.EOF
                Me.Combo96.AddItem RS![Company]
                oRec.MoveNext
            Loop
        End If
    End If
End If
Resume err_endit

Skippy:
MsgBox ("Run-Time Error CMP-0702-" & Erl & " Can't Read [Clients] Data")
Call sendReport.SendErrorDetail("CMP-0702-" & Erl, "Can't Read [Clients] Data SRC-" & SearchStr & "-" & Err.Description & "-" & Err.Number)
Resume err_endit

【问题讨论】:

  • 当您尝试后期绑定连接和记录集时会发生什么?即Set oRec = CreateObject("ADODB.Recordset")Set LoadRibbonsConnection = CreateObject("ADODB.Connection")。如果这是版本问题,这里有一些 documentation 可能适用
  • 我发现问题是在安装 Access 2007 运行时出现的。知道冲突可能在哪里,除了卸载 Access 2007 运行时是否可以修复它???
  • 不确定,是否同时安装了 2007 和 2010?当您延迟绑定(上面的 CreateObject 代码)连接和记录集时,它仍然会中断吗?中断时它会通过电子邮件向您发送什么错误?
  • 它似乎并不关心后期绑定。
  • 我发现如果我在“打开方式”中选择“其他”访问运行时,那么它就可以工作......我想这只是一些访问脆弱......

标签: vba ms-access-2007 ms-access-2010 ado dao


【解决方案1】:

考虑在 Combo96.RowSource 而不是 Combo96.Recordset 属性中使用 SQL 查询。如果连接后 tblClient 在本地可用,则在 VBA 中将组合框的行源设置为

SELECT replace(replace([Company],"","","""" ),"":"","""") as [Companys] FROM tblClient where company &lt;&gt; '' ORDER BY [Company]

显然,关于如何打开 ADODB 记录集以将其分配给组合框/列表框有一些注意事项。请参阅此论坛主题:Populate Combo box using recordset

【讨论】:

    【解决方案2】:

    原来这是 Access 运行时的问题。因为 2007 和 2010 都安装了,所以有必要选择应该在哪个 Access 下运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多