select查询从VBA访问不返回重复的值

任何有关这个问题的帮助,不胜感激。

我试图从Access中通过Select方法检索具有相同ID的多个值并将其粘贴到Excel工作表中。 我从Excel VBA运行代码。

我用来检索所述值的查询是:

SELECT Role FROM Roles WHERE App_ID=(SELECT ID FROM Apps WHERE NAME='app name'); 

将其分配给一个variables,然后使用Set variable = cn.Execute(variable) 。 问题是,从Excel VBA执行的这个查询只返回find的第一个值。 现在,如果我从Access运行此查询,它会返回每个值与指定的应用程序的ID。

我曾尝试使用INNER JOIN,IN,HAVING等,但它只是不会检索到Excel的所有值。 就像我说的,查询在Access中使用时正常工作,所以我知道这必须在Excel中的限制。

感谢你们提供的帮助。

假设您在Excel中使用ADODB,请记住Execute函数返回一个Recordset 。 您可以循环访问logging集以查看其他行。

 Set rng = ActiveSheet.Range("A2") Set rst = cn.Execute(strSQL) With rst Do While Not .EOF rng = CStr(!Role) Set rng = rng.Offset(1) .MoveNext Loop End With 
 'Applies to Access 2010 'Reference Microsoft ActiveX Data Objects 6.1 Library Dim strSQL As String Dim strDBPathName As String Dim strConProvider As String Dim strPersist As String Dim conADODB As ADODB.Connection Dim rsADODB As ADODB.Recordset Set conADODB = New ADODB.Connection strConProvider = "Provider=Microsoft.ACE.OLEDB.12.0;" 'Database path name strDBPathName = "Data Source=C:\Temp\Database.accdb;" strPersist = "Persist Security Info=False;" With conADODB .ConnectionString = strConProvider & strDBPathName & strPersist .Open End With strSQL = "SELECT Role FROM Roles WHERE App_ID=(SELECT ID FROM Apps WHERE NAME='app name')" Set rsADODB = New ADODB.Recordset With rsADODB .Open strSQL, conADODB, adOpenStatic, adLockPessimistic If Not (.EOF And .BOF) Then 'Range of spreadsheet to paste records Cells(1, 1).CopyFromRecordset rsADODB End If .Close End With Set rsADODB = Nothing conADODB.Close Set conADODB = Nothing