2009/10/22

使用OpenOffice Base開啟MS Access檔案的方法

因為省錢,所以公司改用OpenOffice,我的MicroSoft Office也被回收了,沒有Excel也沒有Access,但偏偏都是我的程式要使用到的鬼東西。





  Excel問題暫時可以丟掉,因為公司裡太多採購人員要使用而改成購買使用權給需要的人(但不包括要寫出轉Excel表的程式人員?),另設公用電腦幾部,供電腦沒有Excel的人使用。
  但Access就麻煩了,一般使用者只需要透過Delphi存取需要的表格即可,所以全事業部會使用到Access的人就兩個,就是寫Delphi的兩位(其中一位是我),因此完全被忽略掉Access的使用權,被迫使用OpenOffice BASE,問題是,BASE和ACCESS的關係,就像ACCESS和SQL SERVER一樣只有匯入匯出的關係,它們是完全不相干的兩個軟體,所以接下來只好自立自強,使用BASE來玩ACCESS的.mdb檔,於是好心的高手同事王兄(其實同年紀)研究出這種有點麻煩的方法來。

  一般來說,用OO.BASE打開.mdb檔很簡單。
  1.直接打開.mdb檔,並選擇OO.BASE來開啟



  2.跳出該視窗後必須選取消,選確定它會很蠢的用OO.Writer來開(說蠢是因為,明明就選OO.BASE開了)


  3.選擇連線到現有的資料庫,並選擇Microsoft Access類型


  4.再選擇檔案一次(所以一開始就直接開OO.BASE還比較快)


  5.接下來怎麼選都沒關係,按下完成後會叫你存一個.odb檔(但類型叫ODF資料庫)



  6.接著就可以會打開簡潔介面的資料庫使用。



  但現實是正常的資料庫會加上密碼,這時候以上方法完全不適用
  1.首先要到控制台→系統管理工具→資料來源,設定ODBC


  2.選擇Microsoft Access Driver (*.mdb),新增檔案來源



  3.接下來和一般開啟法的1、2、3項一樣,但這次是選擇ODBC類型


  4.選擇已經建立好的ODBC來源,並設定使用者名稱,必須輸入密碼打勾(不打勾則無法開啟有密碼的資料庫),測試連線不論密碼對錯,都會出現一連串的亂碼訊息(也可能是我的電腦有問題,不論如何有測沒測都一樣)



  5.接下來和一般設定的5項一樣,不一樣的是存檔後不會馬上出現介面,而是先出現輸入帳號密碼的畫面,輸入正確的密碼後才會出現使用介面(日後直接開啟.odb檔時都會出現輸入帳號密碼的畫面)


  不過,我還沒研究出來怎麼更改資料庫密碼(也就是要更改密碼必須再使用ACCESS更改,那麼為了配合每三個月更改一次密碼的資安規定,必須要把檔案拿去找一台可以開Access的電腦改密碼才行),而且奇怪的是每次重新打開資料庫,它一定預設在表單功能介面,要去點選表格功能才會出現要求密碼的畫面,也才能正式打開。


5 則留言:

  1. 不知道這樣的方法能否修改mdb中的資料欄位?
    我試了幾次前面的方法,雖然可以打開、管理資料
    但是要修改欄位時會出現錯誤,而且可怕的是修改的欄位還會消失。

    回覆刪除
  2. 我實際測試過了一次。

    1.如果單純是增加欄位並沒有問題。
    例如在原本的Table中有三個欄位(ex:a,b,c),新增第四個名叫「d」的欄位後,在儲存時它會出現警告視窗,仔細看對話視窗上寫得可能是「無法變更欄a(或b,c)。要刪除它再重新設定格式?」,這時請選擇否,這樣就能成功新增欄位,資料也不會消失。

    2.如果是要修改欄位類型,需要一點小手段,但是遇到含有某些類型的時候可能會出現錯誤而無法成功。
    首先右鍵點選要修改欄位的表格選擇複製,然後在空白處點右鍵選擇貼上,接著會跳出一個視窗。輸入新的表格名稱,然後選擇定義和資料→下一個畫面選擇所有欄位→下一個畫面將要修改的欄位類型更改→確定後就會產生新的Table。接著確認是否新Table中有將所有資料都複製過去了,如果有成功,就可以將舊的刪除,將新表重新命名即可。

    不過以上方法還是會有很多後遺症,所以建議使用最終絕招:直接向MIS或大老闆凹一套Access來用(笑)

    回覆刪除
  3. 承上,忘了說,重新建立Table後,記得至『工具→關係』中重新建立新表格的關聯表

    回覆刪除
  4. 研究出來怎麼更改資料庫密碼 教一下喔

    回覆刪除
  5. 其實這個問題我也想了很久,後來我突然有個想法,但不確定是否正確。

    這種使用Base開啟Access檔的做法只是一種客戶端(BASE)存取伺服端資料庫(ACCESS),而並非是實際上的開啟資料庫,當然也就不存在資料庫管理者的最高權限(包括無密碼的Access也沒有權限)。

    回覆刪除