2016-10-16 6 views
0

これで、VBAのListBoxにADODB.Recordsetを割り当てようとしています。エラーが発生しました:「入力したオブジェクトは有効なレコードセットプロパティではありません」ここで間違っていますか?VBA入力したオブジェクトが有効なレコードセットプロパティではありません

注:adoConnは有効で、コード内の他の場所に設定されています。

Private Sub Form_Load() 
' Error Management 
On Error GoTo ErrHandler: 

Dim adoRS As New ADODB.Recordset 
Dim sqlStmt As String 

' Create the SQL statement 
sqlStmnt = "SELECT GroupName FROM tblGroups" 

' Execute the statement 
adoRS.Open sqlStmnt, adoConn 

' Add items to the lstGroups 
If (adoRS.RecordCount <> 0) Then 
    Set lstGroups.Recordset = adoRS 
End If 

' Clean up 
adoRS.Close 
Set adoRS = Nothing 
Exit Sub 

ErrHandler: 
' Clean up 
If (adoRS.State = adStateOpen) Then 
    adoRS.Close 
End If 

Set adoRS = Nothing 

If Err <> 0 Then 
    MsgBox Err.Source & "-->" & Err.Description, , "Error" 
End If 
End Sub 

これは、誰でもアクセス13分の2010でこの問題に遭遇その場合はADOが更新

Public Sub openConnection() 
' The path to the database 
Dim strDBPath As String 
strDBPath = "C:\Users\Vincent\****\****\" 

' The database name to connect to 
Dim strDBName As String 
strDBName = "Permissions_be.accdb" 

' Full path to the database 
Dim strDBFull As String 
strDB = strDBPath & "\" & strDBName 

' Instantiate an ADO object 
Set adoConn = New ADODB.Connection 

' Connect to database 
With adoConn 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .Mode = adModeShareDenyNone 
    .Open (strDBPath & strDBName) 
End With 
End Sub 

を開いている方法です。 - リストボックスを値リストに設定します。 - その後、レコードセットをVBA側のループに

' Add items to the lstGroups 
If (adoRS.RecordCount <> 0) Then 

    Do While Not adoRS.EOF 
     ' This is how to add two columns to one listbox if you need only 
     ' one then put only the (adoRS.Fields(0)) 
     lstGroups.AddItem (adoRS.Fields(0) & ";" & adoRS.Fields(1)) 
     adoRS.MoveNext 
    Loop 
    lstGroups.Requery 
End If 

答えて

1

問題は、あなたがドキュメントを見ればあなたは、リスト内の「レコード」プロパティではないことがわかります。このライン

Set lstGroups.Recordset = adoRS 

です - :以下のようなものでなければなりません。

リストと呼ばれるリストボックスのプロパティがあり、バリアント配列を受け入れます。レコードセットから値を取得し、配列に値を入れてリストに入れることができます。

何か

' Add items to the lstGroups 
If (adoRS.RecordCount <> 0) Then 
    lstGroups.List= adoRS.GetRows 
End If 

ように私は、このいずれかをテストするものではありませんでしたが、それは右のトラックであなたを得る可能性があります。

また、あなたはそれがリストでこのリンクを動作するように取得しない場合は、1 enter link description here

+0

私はそれがより多くのことを知っていると付け加えました1つの行がこの非常に曖昧なエラーを引き起こす可能性があります。しかし、あなたのソリューションを試してみたら、コンパイルエラー - >メソッドまたはデータメンバーが見つかりません – Maxs728

+0

あなたのリストボックスの後にドットを押すと、あなたのレコーセットはintelisenseになりますか? –

+0

はい、私はそうですが、それはオプションではありません..もしこれがアクセス2010にあり、2013と互換性がある必要がある場合は – Maxs728

0

はどのようにあなたのadoConnを設定するのですか?

Dim cnn As ADODB.Connection 
Set adoConn= New ADODB.Connection 

With adoConn 
    .Provider = "Microsoft.Access.OLEDB.10.0" 
    .Properties("Data Provider").Value = "SQLOLEDB" 
    .Properties("Data Source").Value = "10.******" 
    .Properties("User ID").Value = "*****readonly" 
    .Properties("Password").Value = "*****readonly" 
    .Open 
End With 
+0

ずつが私の編集を参照してそれらを追加する方法については非常に良い例を持って、私はそれに – Maxs728

関連する問題