2012-03-25 80 views
0
Sub connectmysqlnormal() 
Dim objListObj As ListObject 

For Each objListObj In ActiveSheet.ListObjects 

objListObj.Delete 
Next 

ActiveSheet.Cells.Select 
Selection.ClearContents 
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ 
    "ODBC;DSN=localtest;", Destination:=Range("$A$1")).QueryTable 
    .CommandText = Array(_ 
    "SELECT cpu_avg_statistics_0.LOGDATE as 'Date of Month', cpu_avg_statistics_0.CPU as 'CPU Utilization %' FROM test.cpu_avg_statistics cpu_avg_statistics_0 WHERE (cpu_avg_statistics_0.LOGDATE between '2012-02-01' and '2012-02-05') AND (cpu_avg_statistics_0.SERVER_NAME='adm1') ORDER BY cpu_avg_statistics_0.LOGDATE" _ 
    ) 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .PreserveColumnInfo = True 
    .ListObject.DisplayName = "Table_Query_from_localtest" 
    .Refresh BackgroundQuery:=False 
End With 
End Sub 

我可以連接在mysql中運行sql。但是當我像上面那樣放置在vba代碼中時, 我在sql語句中遇到了類型不匹配錯誤,請幫助並告訴我什麼是錯誤的?類型不匹配錯誤sql中從excel連接到mysql vba

+1

你可以從MySQL直接運行呢? – NoChance 2012-03-25 17:08:59

+0

是的,我可以在mysql中運行後得到結果集 – 2012-03-25 18:59:24

回答

1

嘗試沒有在該行使用陣:

.CommandText = Array(_ 
    "SELECT ..." _ 
    ) 
+0

這是一樣的,類型不匹配 – 2012-03-26 00:10:11

+0

對不起,它不工作,如果不使用數組,爲什麼? – 2012-03-26 00:18:44

+0

因爲CommandText是「string」類型的基本類型。數組是一個對象,但它不是「string」類型。 – NoChance 2012-03-26 01:10:10

0

我認爲你需要下面的行與其他的QueryTable性的判定一起:

.CommandType = xlCmdSql