2015-05-21 101 views
0

使用VBA,Excel 2007和下面的connectionString:SQL語句中的多個列的Excel

"provider=Microsoft.ACE.OLEDB.12.0;Data Source=myFile.xlsx; Extended Properties=Excel 12.0"  

我試圖執行下面的查詢SELECT [col1], [col2] FROM [Sheet1$] WHERE ([col1], [col2]) IN ((val1, val2), (val3, val4), (val5, val6))

唉,VBA錯誤指定它不不喜歡查詢表達式中的逗號。

是否有任何語法更改可以執行此查詢運行? 或另一個查詢會做同樣的事情?

下面是每個請求

Sub testQuery() 
    Dim conStr As String, sql As String 
    conStr = "provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\me\Desktop\QueryMe.xlsx; Extended Properties=Excel 12.0" 
    sql = "SELECT col1, col2 FROM [Sheet1$] WHERE (col1, col2) IN (('val1', 'val2'), ('val3', 'val4'), ('val5', 'val6'))" 
    Dim objCon As Object, objRS As Object 
    Set objCon = CreateObject("ADODB.Connection") 
    Set objRS = CreateObject("ADODB.RecordSet") 

    objCon.Open con 
    objRS.Open sql, con 
    objRS.Close 
    objCon.Close 
End Sub 
+0

請發表您的實際代碼。 –

+1

您是否試過在哪裏(col1 ='val1'和col2 ='val2')或(col1 ='val3'和col2 ='val4')和...? – zedfoxus

+0

@zfus我沒有,謝謝。 – Greg

回答

1

周圍的代碼你也許可以用這脫身:

sql = "SELECT col1, col2 FROM [Sheet1$] WHERE col1+col2 IN ('val1val2','val3val4','val5val6')" 
+0

這個查詢將返回不同的結果,例如('val1','val4')的行,而不是我正在尋找的。 – Greg

+0

@Greg你是否在尋找像col1同時擁有'val1'和'val2'這兩列的組合,或者它同時擁有'val3'和'val4'? –

+0

尋找只返回具有值列表組合的行。即(col1 ='val1'AND col2 ='val2')OR(col1 ='val3'AND col2 ='val4')... – Greg