2014-05-23 75 views
1

我有一個訪問2010數據庫,它是一個訪問2007年數據庫。它使用網絡服務器上的第二個數據庫。Ms Access 2010 Recordset不會綁定到某些機器上的組合框

我正在開發Windows 7 32位。

下面是我繼承的代碼...

我遇到的問題是,儘管數據集綁定到ComboBox(Combo96)對我蠻好的「發展模式」,並在「運行模式」並且它也可以用於其他Windows 7 32位機器和另一臺Windows 7 64位機器。它拒絕在一臺Windows 32位機器上工作。

我猜它的問題與參考?我所知道的目標(失敗)機器是Windows 7,它具有訪問2010運行時,它可能訪問2007年或訪問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 
+0

當您嘗試延遲綁定連接和記錄集時會發生什麼?即'設置oRec = CreateObject(「ADODB.Recordset」)''設置LoadRibbonsConnection = CreateObject(「ADODB.Connection」)''。這是一些[文檔](http://support.microsoft.com/kb/2517589),如果這是版本問題,則可能適用 –

+0

我發現在安裝Access 2007運行時時發生問題。任何想法可能會發生衝突,如果我可以修復它,而不是卸載Access 2007運行時? – GDutton

+0

不是確定的,它是否安裝了2007和2010?當你延遲綁定(上面的CreateObject代碼)連接和記錄集時它仍然中斷嗎?它什麼時候發生錯誤? –

回答

0

原來這是一個Access運行時的問題。因爲2007和2010都安裝了,所以有必要選擇運行哪一個Access。

0

考慮在Combo96.RowSource而不是Combo96.Recordset屬性中使用SQL查詢。如果tblClient在連接後在本地可用,則在VBA中將組合框的行源設置爲

SELECT replace(replace([Company],"","",""""),"":"","""") as [Companys] FROM tblClient where company <> '' ORDER BY [Company]

顯然,有關於如何打開ADODB記錄集以將其分配給組合框/列表框的警告。看到這個論壇主題:Populate Combo box using recordset