HI,大家好,我是星光。
聊了十幾期,總算把SQL查詢語句聊完了——打個哈欠先。
DELETE FROM 成績表 WHERE 姓名='看見星光'本系列第1章的時候我們說過,EXCEL執行SQL的操縱語句,需要通過VBA+ADO的方式;第2章我們也介紹了如何使用VBA引用ADO對象並執行SQL語句。綜上,在VBA中使用DELETE語句完整代碼如下:代碼看不全可以左右拖動...▼
Sub DoSql1() Dim cnn As Object Dim strPath As String, strCnn As String, strSQL As String Set cnn = CreateObject("adodb.connection") strPath = ThisWorkbook.Path & "\資料庫.accdb" strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath cnn.Open strCnn strSQL = "DELETE FROM 成績表 WHERE 姓名='看見星光'" cnn.Execute (strSQL) cnn.Close Set cnn = NothingEnd Sub而假設我們需要刪除ACCESS文件中,EXCEL當前工作表(表名為』操作表』)A列出現的姓名數據。Sub DoSql2() Dim cnn As Object Dim strPath As String, strCnn As String, strSQL As String Set cnn = CreateObject("adodb.connection") strPath = ThisWorkbook.Path & "\資料庫.accdb" strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath cnn.Open strCnn strSQL = "delete from 成績表 where 姓名 in (select * from [Excel 12.0;database=" & ThisWorkbook.FullName & "].[操作表$a:a])" cnn.Execute (strSQL) cnn.Close Set cnn = NothingEnd Sub代碼中SQL語句使用了IN運算符和子查詢,關於子查詢,可以參考本系列教程第13課什麼是子查詢。代碼中ADO創建的連接是ACCESS文件,在此基礎上,SQL語句查詢Excel工作簿工作表的數據時,使用了[Excel 12.0;database=" & ThisWorkbook.FullName & "].[操作表$a:a]語句。
該知識點可以參考本系列教程第4課SQL中表技巧的總結。
當然,也可以使用關聯語句作為刪除條件執行DELETE,代碼如下:Sub DoSql3() Dim cnn As Object, strSQL1 As String Dim strPath As String, strCnn As String, strSQL As String Set cnn = CreateObject("adodb.connection") strPath = ThisWorkbook.Path & "\資料庫.accdb" strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath cnn.Open strCnn strSQL1 = "[Excel 12.0;database=" & ThisWorkbook.FullName & "].[操作表$a:a] b" strSQL = "delete distinctrow a.* from 成績表 a inner join " & strSQL1 & " on a.姓名=b.姓名" cnn.Execute (strSQL) cnn.Close Set cnn = NothingEnd SubDELETE子句指定了需要刪除記錄行的表名(delete distinctrow a.*),並使用內連接inner join的查詢結果作為刪除條件。需要注意的是,DELETE後有個關鍵字DISTINCTROW,這通常是ACCESS DELETE使用關聯查詢方案時必備的;而SQL Server則並不需此用法。ACCESS(JET SQL)與SQL SERVER(T-SQL)有很多不同,這不是我們系列教程的重點,略過,感興趣的朋友可以自行百度。為什麼例子中使用了ACCESS文件,而不是EXCEL呢?為什麼不舉個使用DELETE語句刪除EXCEL某個表的記錄行的例子呢?對於EXCEL文件,SQL可以刪除單元格內的值,但不能使用DELETE語句刪除整條記錄,或者說刪除單元格自身;否則會收到以下錯誤提示:左上角點關注,右下角點個讚,揮手下期再見。
案例文件下載百度網盤..▼https://pan.baidu.com/s/1qors1pZB6MOvfWoTT7Mokw 需要系統學習Excel,卻找不到優質教程?學習Excel的過程中遇到疑難問題,卻找不到人及時作出解答?加入我的付費社群,這一切都不是問題……
右下角↘你懂得~