iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 5
0
自我挑戰組

Access VBA的眉眉角角系列 第 5

Access VBA 的眉眉角角Day5: SQL語法於VBA中的應用1

  • 分享至 

  • xImage
  •  

上一篇我們利用了自己撰寫的小程式來達成SQL語法轉為VBA可以使用的字串,這篇來介紹,這些SQL的字串有哪些作用。

這裡我們要再來回頭講解一下SQL語法的幾種功能,我們於「查詢」功能中,使用「查詢類型」下拉功能表可以看到,語法大致區分成「選取查詢」、「交叉資料表查詢」、「產生資料表查詢」、「更新查詢」、「新增查詢」、「刪除查詢」
http://ithelp.ithome.com.tw/upload/images/20161206/20007221x8gNBi9z0I.png

這裡為了之後方便教學,我們這匯入Access內附的「北風樣本資料庫」資料表,方法如下:

點選「說明」->「範本資料庫」->「北風樣本資料庫」
http://ithelp.ithome.com.tw/upload/images/20161206/20007221eTnhyu5f3T.png

如果檔案不存在,則會進行安裝
http://ithelp.ithome.com.tw/upload/images/20161206/200072218bcGq8a92B.png

裝好後開啟的程式畫面,按下確定
http://ithelp.ithome.com.tw/upload/images/20161206/20007221mBhl3iS9gD.png

顯示出主表單,按下「顯示資料庫視窗」
http://ithelp.ithome.com.tw/upload/images/20161206/20007221tTJR7spEPL.png

這個資料庫就是微軟原廠的教學範本,有興趣者也可以從中學習,我們將此資料庫檔案進行備份
http://ithelp.ithome.com.tw/upload/images/20161206/200072214RCLgq4jEZ.png

儲存成另一檔案
http://ithelp.ithome.com.tw/upload/images/20161206/20007221LaCrEwUSpu.png

然後再由Access中,使用「匯入」方式將資料匯入,於資料表空白處,點選滑鼠右鍵,選擇「匯入」
http://ithelp.ithome.com.tw/upload/images/20161206/20007221IdRCP1vCmO.png

選擇剛剛匯出的檔案
http://ithelp.ithome.com.tw/upload/images/20161206/20007221UxtbXXXwvd.png

之後會帶出選擇要匯入的物件,這裡我們可以看到,幾乎所有的Access物件都可以用此方式匯入到另一個Access檔案中使用,因此如果有一些習慣的自製程式,可以先放到自己的Access檔案中,待有需求時,再把資料表、查詢、表單、模組等功能轉移到新檔案上使用。
這裡我們僅需要資料表內容,切換到「資料表」頁簽,點選「全選」,然後再按「確定」進行匯入
http://ithelp.ithome.com.tw/upload/images/20161206/20007221egxpZmTkur.png

匯入後即可於資料表頁簽看到剛剛匯入的資料表
http://ithelp.ithome.com.tw/upload/images/20161206/20007221Wul3oa8FIt.png

好了,我們現在回頭看程式的部份,以VBA的處理方式,就分成兩種,一種拿來查詢資料,另一種拿來處理資料。

查詢資料的有:
「選取查詢」、「交叉資料表查詢」

處理資料的有:
「產生資料表查詢」、「更新查詢」、「新增查詢」、「刪除查詢」

查詢資料常用到的用途如下:

變更「下拉方塊」、「清單方塊」、「圖表」的資料來源(RowSource)內容,
例如:List_Product.RowSource = strSQL

查詢相關功能:
建立查詢,例如:CurrentDb.CreateQueryDef strTable, strSQL
定義查詢,例如:CurrentDb.QueryDefs(strTable).SQL = strSQL
開啟查詢,例如:DoCmd.OpenQuery strTable

處理資料的用途如下:
執行SQL語句,例如:DoCmd.RunSQL

另外一種既可查詢、亦可修改資料,為使用DAO方式處理,我們Day3時也有提過,當時僅用到查詢資料,我們以下使用AddNew與Edit來做資料新增與修改的說明。

例如:

Sub 資料新增與修改說明()

    '範例1: 新增資料
    strSQL = "" & _
    "SELECT 員工.* " & vbCrLf & _
    "FROM 員工; "

    Set m = CurrentDb.OpenRecordset(strSQL)
    
    '新增資料
    m.AddNew
    
    m("姓名") = "王大頭"
    m("名") = "Big Head"
    m("職稱") = "業務"
    m("稱呼") = "大頭"
    m("出生日期") = "1978/1/1"
    m("雇用日期") = "2016/12/5"
    m("地址") = "台南市"
   
    m.Update
    
    Set m = Nothing

    '範例2: 修改資料
    strSQL = "" & _
    "SELECT 員工.員工編號, 員工.國家地區 " & vbCrLf & _
    "FROM 員工 " & vbCrLf & _
    "WHERE (((員工.員工編號)=1)); "
    
    Set m = CurrentDb.OpenRecordset(strSQL)
    
    '編輯資料
    m.Edit
    m("國家地區") = "中華民國"
    m.Update
    
    Set m = Nothing
    
End Sub

以上DAO的教學,僅列出最常使用的Edit、AddNew、Update等,如果要更詳細的資料,可以查閱微軟的Reference:
CurrentDb Method [Access 2003 VBA Language Reference]
https://msdn.microsoft.com/en-us/library/office/aa221178(v=office.11).aspx

另外Allen Browne的網站也可以參考:
Microsoft Access: DAO Programming Code Examples
http://allenbrowne.com/func-DAO.html

研讀後對於使用VBA來操控Access資料庫,應該就會更加得心應手。
以上教學希望對各位有幫助。


上一篇
Access VBA 的眉眉角角Day4: 將SQL語法放入VBA中使用
下一篇
Access VBA 的眉眉角角Day6: SQL語法於VBA中的應用2
系列文
Access VBA的眉眉角角30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言