Excel SQL命令用于从访问表中检索特定信息

时间:2017-05-27 11:58:40

标签: excel excel-vba ms-access vba

使用sql命令将数据从Microsoft Access导入Excel时出现问题。我用" ADODB"将Excel与Access连接。 我在Access中有几个表。我想在TrackNo上输入并使用命令按钮运行命令时获取ClientDesc和ProductDesc。我尝试使用内连接(不完整,没有ProductTB),但我只得到第一行信息。

那么我如何获得所有相应/必需的信息(ClientDesc和ProductDesc)?

以下是我目前的Excel模块代码。

Option Explicit
Public Const DBLink As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\User\Desktop\Mother File.accdb;"

Public Sub SearchTrack(asd As String)

Dim CN As ADODB.Connection
Dim Rs As ADODB.Recordset    
Set Rs = New ADODB.Recordset   

Set CN = New ADODB.Connection
CN.Open DBLink

 Set Rs = CN.Execute("select MotherTb.Customer, ClientTb.ClientDesc from MotherTb inner join ClientTb on Mother.Customer = ClientTb.ClientID")

 If Not Rs.EOF Then
    Cells(2, 2) = Rs("ClientDesc")
Else
    MsgBox "Record not found"
End If

Set Rs = Nothing

End Sub

附上 sample

2 个答案:

答案 0 :(得分:0)

只需遍历您的记录集:

i = 2
Do While Not Rs.EOF 
    Cells(i, 2) = Rs("Customer")
    Cells(i, 3) = Rs("ClientDesc")

    i = i + 1
    Rs.MoveNext
Loop

或者,如果内存允许,请使用Excel方法:CopyFromRecordset

Cells(2,2).CopyFromRecordset Rs

答案 1 :(得分:-1)

在循环之前,我必须在记录集上使用.MoveLast后跟.MoveFirst,以引入多行。