第一篇文章,在這裏。我試圖在Excel中做一個動態查詢,從MySQL中有大約3M記錄的表中檢索數據。我用三個變量來縮小結果。每個變量都是SQL中IN語句的列表。我控制電子表格中列表中出現的項目數量和項目數量。變量/列表是這樣:Excel&MySQL - 運行時錯誤'13':類型不匹配
- X = 「AA」, 「BB」, 「CC」 ...
- Y = 「DDDDD」, 「EEEEE」, 「FFFFF」 ...
- Z = 1,2,3,4,5 ...
如果僅存在1-2在每個列表中,或者如果一個列表很長,其它的是隻有一個項目的項目代碼工作細或者。如果所有列表都很長,則會發生問題:「運行時錯誤'13':類型不匹配」。
當查詢成功時,彈出窗口會要求我輸入數據庫的密碼。當它失敗時,錯誤發生在密碼提示之前,導致我相信這是vba/Excel端的問題,也許是某種容量問題。
關於解決錯誤原因的任何建議?下面的代碼。非常感謝!
Dim X As String
Dim Y As String
Dim Z As String
X = Range("Filter_X").Value
Y = Range("Filter_Y").Value
Z = Range("Filter_Z").Value
ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Data"
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"ODBC;DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=root;;DATABASE=mydatabase;PORT=3306;" _
, Destination:=Range("$A$1")).QueryTable
.CommandText = Array(_
"SELECT subquery.*" & Chr(10) & _
"FROM (" & Chr(10) & _
"SELECT *" & Chr(10) & _
"FROM mydatabase.mytable" & Chr(10) & _
"WHERE (mytable.Xfield IN (" & X & "))) subquery" & Chr(10) & _
"WHERE (subquery.Yfield IN (" & Y & ")) AND (subquery.Zfield IN (" & Z & "))")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Pivot_data"
.Refresh BackgroundQuery:=False
End With
錯誤發生在哪一行?你的琴絃可能會變得太長? – JanB
以下所有代碼都突出顯示進入調試:'.CommandText = Array(_ 「SELECT subquery。*」&Chr(10)&_ 「FROM(」&Chr(10)&_ 「SELECT *」&Chr (10)&_ 「FROM mydatabase.mytable」&Chr(10)&_ 「WHERE(mytable.Xfield IN(」&X&「)))subquery」&Chr(10)&_ 「WHERE(subquery .Yfield IN(「&Y&」))AND(subquery.Zfield IN(「&Z&」))「)' –
對於字符串,多長時間太長?我認爲這不是問題,因爲當其他人短缺時,長期工作會起作用。 –