上一篇我們利用了自己撰寫的小程式來達成SQL語法轉為VBA可以使用的字串,這篇來介紹,這些SQL的字串有哪些作用。
這裡我們要再來回頭講解一下SQL語法的幾種功能,我們於「查詢」功能中,使用「查詢類型」下拉功能表可以看到,語法大致區分成「選取查詢」、「交叉資料表查詢」、「產生資料表查詢」、「更新查詢」、「新增查詢」、「刪除查詢」
這裡為了之後方便教學,我們這匯入Access內附的「北風樣本資料庫」資料表,方法如下:
點選「說明」->「範本資料庫」->「北風樣本資料庫」
如果檔案不存在,則會進行安裝
裝好後開啟的程式畫面,按下確定
顯示出主表單,按下「顯示資料庫視窗」
這個資料庫就是微軟原廠的教學範本,有興趣者也可以從中學習,我們將此資料庫檔案進行備份
儲存成另一檔案
然後再由Access中,使用「匯入」方式將資料匯入,於資料表空白處,點選滑鼠右鍵,選擇「匯入」
選擇剛剛匯出的檔案
之後會帶出選擇要匯入的物件,這裡我們可以看到,幾乎所有的Access物件都可以用此方式匯入到另一個Access檔案中使用,因此如果有一些習慣的自製程式,可以先放到自己的Access檔案中,待有需求時,再把資料表、查詢、表單、模組等功能轉移到新檔案上使用。
這裡我們僅需要資料表內容,切換到「資料表」頁簽,點選「全選」,然後再按「確定」進行匯入
匯入後即可於資料表頁簽看到剛剛匯入的資料表
好了,我們現在回頭看程式的部份,以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資料庫,應該就會更加得心應手。
以上教學希望對各位有幫助。