首页
/
每日頭條
/
職場
/
數據庫中新建查詢的在哪裡
數據庫中新建查詢的在哪裡
更新时间:2026-06-08 18:49:52

大家好,今日講解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
推荐阅读
甘薇産子生的還是剖的(甘薇挺臨盆巨肚工作到淩晨)
甘薇産子生的還是剖的(甘薇挺臨盆巨肚工作到淩晨)
  近日懷二胎即将臨盆的甘薇在微博曬出一組工作照,挺着大肚子的她直接累得睡在椅子上。甘薇附文:“終于彩排完了。太累了,累得我想哭。忙完發布會,我也該休息了。公司的同事們都怕我在台上突然發作,要生了怎麼辦,恨不得,把救護車和輪椅都給我準備好了。”      被封為“拼命三娘”的甘薇,6月份也曾在微博曬出工作照,并配文稱:“從早上十一點開會,腰都快要累斷了。到現...
2026-06-08
安德魯和艾瑪的愛情(艾瑪史東似魔戒精靈弓箭手)
安德魯和艾瑪的愛情(艾瑪史東似魔戒精靈弓箭手)
  自從《愛樂之城》名聲大噪後,奧斯卡影後艾瑪史東陸續接下各種戲路,近期曝光正在拍攝的Netflix新劇《Maniac》,仔細一看那頭金色長發與奧蘭多布魯知名作品《魔戒》裡的精靈弓箭手相似度近乎百分百呀!      耳朵同樣利用特殊化妝變成精靈耳,咖啡色鬥篷配上長靴,背着長長的弓箭,新戲造型一公開,連奧蘭多布魯(Orlando Bloom)也在instagr...
2026-06-08
鄉鎮控辍保學工作開展(鳳山鎮紮實開展控辍保學工作)
鄉鎮控辍保學工作開展(鳳山鎮紮實開展控辍保學工作)
  在鞏固拓展脫貧攻堅成果與鄉村振興有效銜接的進程中,義務教育保障依然是“兩不愁三保障”的底線和硬性指标。鳳山鎮黨委、政府高度重視義務教育保障工作,嚴格落實"一個都不能少"控辍方針,加大控辍保學工作力度,保障适齡兒童受教育的權利,兜牢義務教育保障底線。      近日,鳳山鎮黨委書記陳業忠、鳳山鎮武裝部長陳家賢率鳳山鎮第四初級中學副校長、班主任、石榕村小學校...
2026-06-08
林生斌現任妻子分享生活(僅用6月就從實習生)
林生斌現任妻子分享生活(僅用6月就從實習生)
  林生斌的事情發酵8天後,他終于出來回應了。一口氣發了5條動态,字裡行間都是在說自己很懷念逝去的妻兒、讓大家不要傷害他現在的妻兒、他對他嶽父嶽母很好,沒有這幾天傳的那麼糟。      在這幾條動态中,關于林生斌的現任妻子小樂的動态,引起了小8的注意。這些天,關于小樂的傳言,說什麼的都有,有說她是小三上位的,有說她跟林生斌早就認識的,還有說她跟保姆是親戚的。...
2026-06-08
天堂2血盟什麼職業最簡單(血盟職業不知道怎麼選)
天堂2血盟什麼職業最簡單(血盟職業不知道怎麼選)
  《天堂2:血盟》是NCSOFT國内唯一首授權的手遊,而NCSOFT是《天堂2》的開發工作室,《天堂2:血盟》和《天堂2》的關心自然不用小編我多說,雖然《天堂2》是一個老IP,但是實際上遊戲中的萌新還是不少的,對于萌新來說,在《天堂2:血盟》中最先要面對的就是選擇職業,面對《天堂2:血盟》的9個職業,應該怎麼選,就成了衆多萌新玩家需要面對的問題,今天小編就...
2026-06-08
Copyright 2023-2026 - www.tftnews.com All Rights Reserved