接收從資料庫表單讀取來的資料的Table元件若要顯示欄位名稱,則必須在人機畫面上的元件按滑鼠右鍵,從跳出的選單中點選Column Headers這一項讓欄位顯現,再依序打入欄位名稱


在資料庫中只有一個表單時是沒啥問題,但若資料庫中含有多個表單時,欄位名稱並不會隨著讀取不同的表單自動變更

20071117-01  

 

 

為了能在人機畫面切換查詢其他表單,把SQL查詢指令那一項字串拆成2個部份,表單名稱用Combo Box元件作成可點選切換的物件,再來的問題就是如何讀取資料庫表單的欄位資料,使Table元件的欄位名稱隨著不同表單的讀取自動變更


在此必須使用到上上一篇文章提到的較複雜的讀取資料庫方法,在那方法的SQL Fetch Data (GetString).vi元件後面再追加ADO Recordset Get Fields.vi和ADO Fields Get Count.vi 兩個元件,以取得表單的全部設定資料


取得的資料在用For Loop進一步分解出需要的部份,在For Loop中使用Invoke Node和Property Node元件來解析資料


Invoke Node元件切換到Item和Index,Index使用For Loop自動切換欄位,由Item輸出結果


而Property Node元件切換到Name分解出每一欄位名稱,從For Loop輸出欄位名稱的陣列資料


要接收欄位名稱的陣列資料需使用Table元件的Property Node,在Table元件上按滑鼠右鍵從跳出的選單中點選Property Node這一項,點按改變Property Node的項目成為Column HeadersΠ(欄位名稱)


執行後即可看到若讀取其他表單則Table元件上的欄位也會跟著改變

20071117-02  

 

 

成功讀取欄位名稱後面臨到另一問題,那就是Table元件的欄位寬度是固定的,要看到完整的資料內容勢必手動調整欄位大小


希望在讀取其他表單時能自動調整Table元件的欄位寬度,於是嘗試用程式讀取資料庫表單的欄位大小設定值


在試驗過程中遇到一個瓶頸,Access資料庫表單自動編號的主索引欄位大小是不可變的,而其欄位大小的值很小,讀到Table元件的那個欄位寬度會跟著縮到看不出內容。最後決定在處理欄位寬度的資料時略過那一欄


讀取欄位大小的值並沒有想像中困難,只要點按改變Property Node的項目成為DefinedSize即可。困難的反而是如何寫入Table元件,最後還是用For Loop來解決


這次還是使用Table元件的Property Node,用For Loop切換ActiveCell的Column順序,將分解的欄位大小數值依序填入Cell Size的Width項目中


執行後即可看到若讀取其他表單則Table元件上的欄位寬度也會跟著改變

20071117-03  

 

 

統合讀取資料庫表單欄位名稱和欄位大小的功能,終於能在讀取其他表單時自動變更欄位名稱和寬度

20071117-04  

, ,

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