先聲明要用LabVIEW做這一題,要先準備幾項參考資料,連我也沒辦法記住那麼多的資料


1.SQL語法手冊:這一題建立表單部分是依靠SQL語法來完成,產生的表單要加上各種設定也是要依靠SQL語法來完成


2.和Access相關的SQL或VBA資料:Access資料表欄位的屬性設定有一定格式,且新舊版本有些微的差異,要設定前務必查清楚正確的變數名稱和設定範圍

 

 

再來最重要的一點:自訂名稱絕對不要使用到資料庫的保留字,保留字通常用在SQL語法或特定用途上,誤用保留字會使程式判斷為語法錯誤


保留字的種類項目請自行參考以上提到的兩份資料

 

 

這個範例程式只用到簡單的設定,執行後會在程式的同一資料夾產生一個資料庫,資料庫內會建立一個空白表單,我把欄位屬性全設定為文字格式50字元寬度,建立的表單如下圖:


依版本的不同,較新版的Access在打開建立的資料庫時都會出現"安全性警告",可以略過不管

20130625-15  

 

 

程式面板設定如下圖:


要注意檔名、表單名稱及欄位名稱絕對不要使用"保留字"

20130625-04    

 

 

整體程式架構如下圖:

  20130625-05  

 

 

主要分成3大部分:

 

1.檔案資料夾路徑處理:主要是判斷程式所在的資料夾路徑,以便在同一資料夾建立檔案。因為我程式是放在LLB檔案內,所以多了一層的處理手續。若想要自行指定資料夾路徑,可以把這段程式拿掉

 

2.建立空白資料庫檔案:網路上有許多建立Access空白資料庫檔案的方法,但不是副檔名為mdb就算是Access檔案,因為Access無法打開的都是無效檔案。LabVIEW不存在直接建立Access有效檔案的方法,要建立Access有效檔案還是只能靠ActiveX來處理。這部分因為比較複雜,說明會寫多一點

 

3.建立空白表單:這部分使用LabSQL元件和SQL語法直接建立表單,因為可能會有許多欄位要設定,所以另外做了一個SubVI來處理欄位設定字串

 

 

以下分段解說3段程式:

 


1.檔案資料夾路徑處理:

20130625-06  

 

基本上資料夾路徑處理程式已經有固定的標準模式,按圖操作就不會出錯。這段程式會輸出"資料夾路徑"+"檔名".mdb的字串


產生的檔案路徑則以開檔的方式,先用來檢查同一資料夾內是否有相同的檔案,若有相同的檔案則後續程式不執行

 

 

2.建立空白資料庫檔案:


這段程式會用到標準格式的資料庫連接字串如下:


Provider=Microsoft.Jet.OLEDB.4.0;Data Source="資料夾路徑"+"檔名".mdb


所以要把檔案資料夾路徑結合處理,其中Microsoft.Jet.OLEDB.4.0是舊版Access在使用的,若要使用新版請自行參考資料

 

 

程式會用到ActiveX元件ADOX._Catalog,這個元件的調用方法請按照以下步驟執行:


a.先在程式面板放上一個Automation Refnum元件

20130625-09  

 

b.在Automation Refnum元件上按滑鼠右鍵,從跳出的選單中點選Select ActiveX Class內的Browse...那一項

20130625-10  

 

c.從跳出的視窗上方下拉式選單中,選擇Microsoft ADO Ext. 2.8 for DDL and Security Version 2.8那一項。這項目部分字串會因安裝的Access版本略有不同

20130625-11  

 

d.在下方選單中選擇Catalog (ADOX.Catalog.2.8),之後按OK完成。這項目同樣部分字串會因安裝的Access版本略有不同

20130625-12  

 

e.接下來的步驟,因為我不想在面板上顯示ADOX._Catalog元件才進行處理,若覺得沒差可以不用做。在程式畫面的ADOX._Catalog元件上按滑鼠右鍵,從跳出的選單中點選Change to Constant完成

20130625-13  

 

f.完成後ADOX._Catalog元件會成為如下圖的狀態

20130625-14  

 

 

以完成的ADOX._Catalog元件加上標準格式的資料庫連接字串,完成建立空白資料檔案的動作。資料庫連接字串後續建立表單時還要用到,所以線要向後拉。接下來若表單沒有要做複雜的設定,則資料庫連接字串就這樣使用,若要做複雜的設定則資料庫連接字串後面再加上;Persist Security Info=False這一串文字

20130625-07  

 

 

 

3.建立空白表單:

 

這段程式會用到標準格式的SQL建立表單語法


CREATE TABLE "表格名稱" ("欄位 1名稱" "欄位 1 資料種類"(資料長度), "欄位 2名稱" "欄位 2 資料種類"(資料長度), ... )


其中CREATE TABLE 後面的字串我另外做個SubVI處理,儘量避免造成欄位很多時的輸入錯誤

 

 

SubVI做成4個輸入1個輸出

20130625-02  

 

20130625-01  

 

 

程式碼如下:

20130625-03  

 

為避免陣列資料數量不一致,程式會以資料最少的陣列數量來處理。另外要注意程式中看似沒有的文字有輸入空白鍵

 

 

建立表單的部分使用LabSQL元件,先和新建立資料庫取得連接,再以SQL語法建立表單,最後再切斷和資料庫的連接

20130625-08  

,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • Kernal
  • 感謝大大的分享!!!小的學疏才淺,可否請教第二步到第三步是怎麼連接上的呢?
  • 你想問的是第二步ActiveX元件中的ADO設定?依據Access的版本設定選項和這篇文章可能有不同,部落格內有其他文章提到較新版本的設定方法

    未出師的小工程師 於 2015/10/07 22:14 回覆

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼