2017-11-11 76 views
0

我有通過VBA的Mysql查詢,並且在使用單元格中的日期時出錯。我需要使用單元格值來實現循環目的。我認爲它是由於excel和Mysql之間的日期格式兼容性。感謝你的幫助。謝謝!在excel(單元格)中引用日期的SQL查詢

For R = 6 to lastrow 

SQLQuery2 = "SELECT * FROM Mfg.databasemodels_note where typeId = " & Sheets("Sheet1").Range("B" & R) & " AND date < " & Sheets("Sheet1").Range("I" & R) & " order by date asc limit 1;" 
+0

順便說一下,例如我的單元格的值2017年10月26日上午03點03分44秒由於 – Kaison

回答

0

簡短的回答是您的SQL字符串中包含這是無法識別到MySQL的日期。在建立字符串之後加入一個斷點,運行代碼,然後查看字符串的內容; MySQL應該如何理解它?

按MySQL的參考材料(下面的鏈接),這裏是你更新的代碼行:

SQLQuery2 = "SELECT * FROM Mfg.databasemodels_note where typeId = " & Sheets("Sheet1").Range("B" & R).Value & " AND date < " & Format(Sheets("Sheet1").Range("I" & R).Value, "'YYYY-MM-DD Hh:NN:SS'") & " order by date asc limit 1;" 

真正的答案是,你永遠,永遠想建立一個SQL字符串包含用戶輸入,從頭開始,因爲SQL injection risks。閱讀How To Invoke a Parameterized ADO Query Using VBA/C++/Java以快速瞭解您應該做什麼(在運行您自己的基本驗證之上)。

基準物質:MySQL 5.7: The DATE, DATETIME, and TIMESTAMP Types/Visual Basic for Applications: Format Function

進一步閱讀:VBA, ADO.Connection and query parameters/ADODB Command failing Execute with parameterised SQL query

+0

的@Excelosaurus ..轉換日期到字符串解決問題。非常感謝!! – Kaison