2014-05-23 1 views
1

У меня есть база данных доступа 2010, которая была базой данных доступа 2007 года. Он использует вторую базу данных на сетевом сервере.Ms Access 2010 Recordset не привязывается к combobox на некоторых машинах

Я развиваюсь в Windows 7 32bit.

Ниже приведен код, я унаследовал ...

Проблема, которую я имею, что в то время как набор данных связывается с комбобоксе (Combo96) просто отлично для меня в «режиме развития» и в «режиме запуска» и он также работает нормально еще с Windows 7 32-битной машиной и еще одним Windows 7 64-битным машином. Он отказывается работать на одном оконном 32-битном компьютере.

Я предполагаю, что это проблема со ссылками? Все, что я знаю о целевой (неудачной) машине, это то, что это Windows 7, у нее есть среда выполнения Access 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

Что происходит, когда вы пытаетесь запоздать связать соединение и набор записей? т.е. 'Set 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, необходимо выбрать, какой из них должен работать.

0

Рассмотрите возможность использования SQL-запроса в Combo96.RowSource вместо свойства Combo96.Recordset. Если tblClient доступен локально после соединения, в VBA задайте источник строк combobox на

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

По-видимому, существуют предостережения о том, как открыть набор записей ADODB, чтобы назначить его в поле со списком/списком. Смотрите этот форум: Populate Combo box using recordset