首页
/
每日頭條
/
職場
/
數據庫中新建查詢的在哪裡
數據庫中新建查詢的在哪裡
更新时间:2026-01-18 07:09:59

大家好,今日講解VBA數據庫解決方案第19講:如何在數據庫中新建一個查詢表,并在工作表中顯示出來。關于Recorsset集合的一些操作講解,在前幾講中講了很多,這裡提醒大家一點:任何對象都不是孤立存在的,要結合實際來理解。有朋友向我咨詢一些概念的問題,在寫這套資料時,我也同樣要參考很多的資料,有時要對照着英語去理解一些概念,這時往往發現很多的概念在英語中和之前人們翻譯是有是對不上的,所以理解起來很難.特别是現在的數據庫講解階段,涉及到ADO、 RDO、連接、打開、引用,單純的從概念上真的很難理解,這時我建議大家不要糾結于純概念,要從實際出發,比如:一段代碼就是一個連接,一個代碼就是一個創建,這樣有實際内容參考的去理解就可以了;再者,無論是什麼途徑,我們的目的是應用,隻要我們能達到應用,就達到了我們的目的。很多寫VBA的人都是專業人士,而我僅僅是根據多年的經驗來寫東西,會緊扣以實用為目的,目的是實用,下一個目的還是實用。

今日我們講解如何從Recorsset記錄集中根據某特定的條件形成一個數據庫中新表。在前幾講的講解中是把這些記錄直接顯示在工作表中,即顯示在EXCEL文件中,今日的内容和前面的内容有所不同,是要形成一個表,然後再顯示。

随着講解的深入,實際工作中經常會遇到的問題會逐漸的體現,大家要跟緊我,我們一起學習,這套教程和《VBA代碼解決方案》不同,有些内容是連續的,需要讀者慢慢的連續的去領會。

下面看看我們今日課題的代碼:

Sub mynzCreateView()

Dim cnADO, rsADO As Object

Dim strPath, strSQL, strViewName As String

Set cnADO = CreateObject("ADODB.Connection")

strPath = ThisWorkbook.Path & "\mydata2.accdb"

strViewName = "普通員工表"

cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath

Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, strViewName, Empty))

If Not rsADO.EOF Then

MsgBox ("請注意:原有表将删除!")

strSQL = "DROP TABLE " & strViewName

cnADO.Execute strSQL

End If

strSQL = "CREATE VIEW " & strViewName _

& " AS SELECT * FROM 員工信息 " _

& "Where 職務= '員工'"

cnADO.Execute strSQL

MsgBox "查詢表創建成功!", , "創建視圖"

rsADO.Close

strSQL = "SELECT * FROM 普通員工表"

rsADO.Open strSQL, cnADO, 1, 3

For i = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(1, i 1) = rsADO.Fields(i).Name

Next i

For i = 1 To rsADO.RecordCount

For j = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(i 1, j 1) = rsADO.Fields(j)

Next j

rsADO.MoveNext

Next i

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代碼的講解:

1 If Not rsADO.EOF Then

MsgBox ("請注意:原有表将删除!")

strSQL = "DROP TABLE " & strViewName

cnADO.Execute strSQL

End If

以上代碼判斷是否存在這個表,如果存在,那麼删除。

2 strSQL = "CREATE VIEW " & strViewName _

& " AS SELECT * FROM 員工信息 " _

& "Where 職務= '員工'"

cnADO.Execute strSQL

MsgBox "查詢表創建成功!", , "創建視圖"

rsADO.Close

上述代碼創建了查詢表,并彈出對話框通知用戶。

這裡用的CREATE VIEW 就是創建視圖的意思:在 SQL 中,視圖是基于 SQL 語句的結果集的可視化的表。視圖包含行和列,就像一個真實的表。視圖中的字段就是來自一個或多個數據庫中的真實的表中的字段。我們可以向視圖添加 SQL 函數、WHERE 以及 JOIN 語句,我們也可以提交數據,就像這些來自于某個單一的表。

SQL CREATE VIEW 語法

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

注釋:視圖總是顯示最近的數據。每當用戶查詢視圖時,數據庫引擎通過使用 SQL 語句來重建數據。

3 rsADO.Close

strSQL = "SELECT * FROM 普通員工表"

rsADO.Open strSQL, cnADO, 1, 3

For i = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(1, i 1) = rsADO.Fields(i).Name

Next i

For i = 1 To rsADO.RecordCount

For j = 0 To rsADO.Fields.Count - 1

Sheets("Sheet1").Cells(i 1, j 1) = rsADO.Fields(j)

Next j

rsADO.MoveNext

Next i

上述代碼先關閉之前的rsADO,然後新建立一個查詢的SQL,用于向工作表輸出數據

4 rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

最後關閉連接和釋放内存。

特别注意點:在上述代碼中要注意的是在新的記錄集建立之前一定要關閉原先的記錄集,但這個時候的數據庫連接不用關閉,因為還是用的同一個數據庫。

好了,我們看看我們的運行結果:

數據庫中新建查詢的在哪裡(如何在數據庫中新建查詢表)1

看看數據庫的表:

數據庫中新建查詢的在哪裡(如何在數據庫中新建查詢表)2

今日内容回向:

1 如何建立一些查詢表?

2 查詢表建立後輸出的時候要注意什麼?

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
每天通勤3小時上班值得嗎(上班來回6.5小時引熱議)
每天通勤3小時上班值得嗎(上班來回6.5小時引熱議)
  “電動車—公交—地鐵—班車—步行”   這兩天,   上海金女士極限通勤每天來回6.5小時,   登上了熱搜,   也引發了不少打工者共鳴。   最新研究報告顯示,   目前我國至少有1400萬人,   正忍受着“極端通勤”。   居住在郊區,   工作在市區,   對在一線城市裡打工的人來說,   再尋常不過。   自駕或公司附近租房成本更高     ...
2026-01-18
冷凍雞翅從哪裡來的(市場上的冷凍雞翅)
冷凍雞翅從哪裡來的(市場上的冷凍雞翅)
  大家好,我是秀廚娘,一個喜歡待在廚房裡研究美食的姑娘,每天與大家分享一道營養美味的家常菜做法,如果您也喜歡做美食,歡迎關注,我們可以互相分享自己在做美食時積累的經驗,互相學習,為家人和朋友做出更營養健康的美食。   導語:市場上的冷凍雞翅,都是從哪來的?超市員工說漏了嘴,看完你再買!   現在人們的收入高了,生活質量和生活水平也都随之提高了很多。對生活品...
2026-01-18
輔助寒冰的天賦和出裝2023年(深度剖析寒冰職業史)
輔助寒冰的天賦和出裝2023年(深度剖析寒冰職業史)
     寒冰的均衡是一個曆史遺留難題,作為英雄聯盟中最古老的英雄之一,她的技能讓她既獨特又難以駕馭。作為一個遠程擁有魔法水晶箭這樣的先手技能是強大的,但她缺乏傷害輸出技能又讓她過于依靠普攻輸出傷害,但她又沒有位移來從艱難的環境中逃脫。   S1賽季      新版的艾希已經正式和全世界玩家見面了,很多人都不确定她的未來如何。有些人可能記得,曾經中單艾希是非...
2026-01-18
如果沒有大專學曆怎麼找到工作(大專學曆真的一無是處找不到工作嗎)
如果沒有大專學曆怎麼找到工作(大專學曆真的一無是處找不到工作嗎)
  就目前來看,本科文憑的“性價比”确實要比大專文憑高出不少,但是大專文憑和高中文憑相比還是有一定優勢的,拿到大專文憑的人可以通過專升本來提升學曆,但是高中的學曆是不可能做到的。從這一層面來看,大專學曆确實是最好的升學“跳闆”。      大專學曆是教師招聘工作的依托   拿到教師資格證的大學生,隻要符合條件,就能拿到大專文憑,去教育部門招聘幼兒園和小學教師...
2026-01-18
廣告投放基礎邏輯是什麼(一文講透廣告投放的底層邏輯)
廣告投放基礎邏輯是什麼(一文講透廣告投放的底層邏輯)
  投放理念篇   一.做投放團隊的錢虧在哪裡?   1. 虧在老闆自己和團隊對投放的理解不足   2. 虧在老闆自己對團隊的把控力不足   3. 虧在老闆自己對團隊的投産控制不足,沒有設置合理的團隊激勵,不關注人效比,甚至計算錯誤   如果你不認同以上的3點,那麼可以關閉掉帖子了,再往後的内容會更讓你不服氣。   二.為什麼要投放?   投放是對抗流量結果...
2026-01-18
Copyright 2023-2026 - www.tftnews.com All Rights Reserved