先聲明要用LabVIEW做這一題,要先準備幾項參考資料,連我也沒辦法記住那麼多的資料
1.SQL語法手冊:這一題建立表單部分是依靠SQL語法來完成,產生的表單要加上各種設定也是要依靠SQL語法來完成
2.和Access相關的SQL或VBA資料:Access資料表欄位的屬性設定有一定格式,且新舊版本有些微的差異,要設定前務必查清楚正確的變數名稱和設定範圍
再來最重要的一點:自訂名稱絕對不要使用到資料庫的保留字,保留字通常用在SQL語法或特定用途上,誤用保留字會使程式判斷為語法錯誤
保留字的種類項目請自行參考以上提到的兩份資料
這個範例程式只用到簡單的設定,執行後會在程式的同一資料夾產生一個資料庫,資料庫內會建立一個空白表單,我把欄位屬性全設定為文字格式50字元寬度,建立的表單如下圖:
依版本的不同,較新版的Access在打開建立的資料庫時都會出現"安全性警告",可以略過不管
程式面板設定如下圖:
要注意檔名、表單名稱及欄位名稱絕對不要使用"保留字"
整體程式架構如下圖:
主要分成3大部分:
1.檔案資料夾路徑處理:主要是判斷程式所在的資料夾路徑,以便在同一資料夾建立檔案。因為我程式是放在LLB檔案內,所以多了一層的處理手續。若想要自行指定資料夾路徑,可以把這段程式拿掉
2.建立空白資料庫檔案:網路上有許多建立Access空白資料庫檔案的方法,但不是副檔名為mdb就算是Access檔案,因為Access無法打開的都是無效檔案。LabVIEW不存在直接建立Access有效檔案的方法,要建立Access有效檔案還是只能靠ActiveX來處理。這部分因為比較複雜,說明會寫多一點
3.建立空白表單:這部分使用LabSQL元件和SQL語法直接建立表單,因為可能會有許多欄位要設定,所以另外做了一個SubVI來處理欄位設定字串
以下分段解說3段程式:
1.檔案資料夾路徑處理:
基本上資料夾路徑處理程式已經有固定的標準模式,按圖操作就不會出錯。這段程式會輸出"資料夾路徑"+"檔名".mdb的字串
產生的檔案路徑則以開檔的方式,先用來檢查同一資料夾內是否有相同的檔案,若有相同的檔案則後續程式不執行
2.建立空白資料庫檔案:
這段程式會用到標準格式的資料庫連接字串如下:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source="資料夾路徑"+"檔名".mdb
所以要把檔案資料夾路徑結合處理,其中Microsoft.Jet.OLEDB.4.0是舊版Access在使用的,若要使用新版請自行參考資料
程式會用到ActiveX元件ADOX._Catalog,這個元件的調用方法請按照以下步驟執行:
a.先在程式面板放上一個Automation Refnum元件
b.在Automation Refnum元件上按滑鼠右鍵,從跳出的選單中點選Select ActiveX Class內的Browse...那一項
c.從跳出的視窗上方下拉式選單中,選擇Microsoft ADO Ext. 2.8 for DDL and Security Version 2.8那一項。這項目部分字串會因安裝的Access版本略有不同
d.在下方選單中選擇Catalog (ADOX.Catalog.2.8),之後按OK完成。這項目同樣部分字串會因安裝的Access版本略有不同
e.接下來的步驟,因為我不想在面板上顯示ADOX._Catalog元件才進行處理,若覺得沒差可以不用做。在程式畫面的ADOX._Catalog元件上按滑鼠右鍵,從跳出的選單中點選Change to Constant完成
f.完成後ADOX._Catalog元件會成為如下圖的狀態
以完成的ADOX._Catalog元件加上標準格式的資料庫連接字串,完成建立空白資料檔案的動作。資料庫連接字串後續建立表單時還要用到,所以線要向後拉。接下來若表單沒有要做複雜的設定,則資料庫連接字串就這樣使用,若要做複雜的設定則資料庫連接字串後面再加上;Persist Security Info=False這一串文字
3.建立空白表單:
這段程式會用到標準格式的SQL建立表單語法
CREATE TABLE "表格名稱" ("欄位 1名稱" "欄位 1 資料種類"(資料長度), "欄位 2名稱" "欄位 2 資料種類"(資料長度), ... )
其中CREATE TABLE 後面的字串我另外做個SubVI處理,儘量避免造成欄位很多時的輸入錯誤
SubVI做成4個輸入1個輸出
程式碼如下:
為避免陣列資料數量不一致,程式會以資料最少的陣列數量來處理。另外要注意程式中看似沒有的文字有輸入空白鍵
建立表單的部分使用LabSQL元件,先和新建立資料庫取得連接,再以SQL語法建立表單,最後再切斷和資料庫的連接
留言列表