类型不匹配错误sql中从excel连接到mysql vba

问题描述:

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

尝试没有在该行使用阵:

.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

我认为你需要下面的行与其他的QueryTable性的判定一起:

.CommandType = xlCmdSql