BaseでMS-Accessのファイルを開くには

Base

はじめに

通常の手順ではBaseを使ってMS-Accessで作成したデータベースファイルを開くことはできません。
Base
を新規に作成する際に表示されるダイアログボックス「データベースウイザード」でラジオボタン「既存のデータベースに接続」をONにし、プルダウンメニューから「Microsoft Access」を選んでも不成功に終わります。どうやら現時点バージョンのBaseには問題があるようです。(本稿執筆時点のVer.7.2です。)

この状況下でアクセス・データベースファイル(拡張子が.mdbまたは.accdbのファイル)を開くためにはいくつかの環境設定が必要です。ここではODBC経由で開く方法とJDBC経由で開く方法の二通りの方法をご紹介します。

これらは少し手間が掛かる手法ですが、手元にmdbファイルかaccdbファイルがあって内容を閲覧したいけれども、手元のPCMS-Accessがインストールされていない場合に役に立ちます。また、mdbファイルからCalc経由でBaseにデータ移行する際の前処理として活用する場合にも役立つでしょう。
(注)データ移行の詳細についてはサイト「知っていますか」の記事「BaseCalc間でデータ移行するには」を参考にして下さい。

 なお、この手法に関する情報は当塾の読者の方から提供されたものです。情報提供された方、有難うございました。

【この手法を実行する場合の注意点】
Basemdbファイルを開いた後に自動生成されるodbファイル(Baseデータベースファイル)は、mdbファイルを作成したときのAccessのバージョンによっては、下記のような不具合が発生することがあります。
1.
リレーションシップが継承されないことがある。
2.
クエリー、フォーム、レポート等、Accessで作成したオブジェクトが継承されない。
3.
テーブル名は表示されるが、レコード内容を閲覧できなかったり、テーブル構造の確認ができないことがある。
4.
新たにリレーションシップを設定することができない。
5.
オブジェクトのひとつであるクエリーがテーブルとして継承される場合がある。
(注)無事に開かれた場合に生成されるodbファイルに埋め込まれたデータベースエンジンが標準のHSQLDBとは異なるものになるためにBaseの各機能が保証されず、上記以外の不具合も発生する恐れがあります。

また、生成されたodbファイルを別のフォルダーに移動した場合は設定したときのデータソースのパスが変わってしまうためにBaseで開くことが出来なくなりますので、十分注意して下さい。

【検証用アクセス・データベースファイルについて】
この手法を紹介する目的でアクセス・データベースファイル(この先はmdbファイルと呼びます。)を用意しました。実機で検証される方はサンプルファイル「address.zip」をダウンロードし、解凍した上でお使い下さい。
検証に使用するmdbファイル「address.mdb」には下図のように「都道府県コードマスター」と、「道の駅マスター」の2つのテーブルが登録されています。両テーブル間にはリレーションシップが設定してあり、また両テーブルを使ったクエリーオブジェクトが登録されています。

それぞれのテーブルには下図のようにいくつかのレコードが登録してあります。
(注)もちろん、アプリケーションソフトMS-AccessがインストールされていないPCでは開くことができません。

作業準備として、検証用フォルダー「C:\work」を作成し、その直下にファイル「address.mdb」を格納しておいて下さい。
(注)検証用フォルダーをドライブ「C:\」直下に作成する理由は、手順の説明を簡素化するためで、他意はありません。

ODBC経由で開く方法

ODBCとは

ODBC(Open Database Connectivity)とはアプリケーションソフトがDBMS(データベース管理システム)などに接続し、データの取得や書き込み、操作などを行う方法の標準を定めたもののことです。Microsoft社が制定したもので、主にWindows上で使用されます。

Microsoft Access Engine 2016のインストール

まず最初にMicrosoft Access Engine 2016を手元のPCにインストールします。
下記URLにアクセスします。
https://www.microsoft.com/ja-JP/download/details.aspx?id=54920
ページの半ばまで下げていくと下図のようにボタン「ダウンロード」が見えてきますので、それをクリックします。

すると、下図のようにプログラム選択画面が表示されますので、ファイル「accessdatabaseengine_X64.exe」を選択して右下にある[次へ]をクリックします。

すると即座にダウンロードが開始します。
ダウンロードが完了したら「accessdatabaseengine_X64.exe」を実行して下さい。
このプログラムを実行すると、Microsoft Office Access (*.mdb および *.accdb) ファイルや Microsoft Office Excel (*.xls*.xlsx*.xlsb) ファイルなどの既存の Microsoft Office ファイルと、Microsoft SQL Server などの他のデータ ソースとの間のデータ転送を簡単に行うためのコンポーネントのセットがインストールされます。
画面は次に進み、「ダウンロードしていただき、ありがとうございます」とメッセージが表示されますが、目的を果たしたので、ここでブラウザーを閉じて結構です。

ODBCデータソースの登録

Windowsのスタートボタンを押し、「Windows管理ツール」>「ODBCデータソース(64ビット)」を選択します。
すると、下図のようにダイアログボックス「ODBCデータソース アドミニストレーター(64ビット)」が表示されますので、タブ「ユーザーDSN」を開き、[追加]をクリックします。

すると、下図のようにダイアログボックス「データソースの新規作成」が表示されますので、「セットアップするデータソースのドライバーを選択してください」と書かれた下の欄から「Microsoft Access Driver(*.mdb,*.accdb)」を選択して[完了]をクリックします。

すると、下図のようにダイアログボックス「ODBC Microsoft Access Setup」が表示されますので、「Data Source Name」欄に任意の名前、ここでは例として「address_data」と入力します。また、「Description」欄に任意の説明、ここでは例として「address.mdbのデータソース」と入力します。
Database」欄の下に[Select…]と表示されたボタンがありますので、これをクリックします。

すると、下図のようにダイアログボックス「Select Database」が表示されますので、対象となるパス「C:\work\address.mdb」を指定して[OK]をクリックします。

すると、下図のようにダイアログボックス「ODBC Microsoft Access Setup」に戻り、「Database」欄に「C:\work\address.mdb」が表示されますので、[OK]をクリックします。

すると、下図のようにダイアログボックス「ODBCデータソース アドミニストレーター(64ビット)」に戻り、登録されたユーザーデータソース「address_data」がリストに追加されますので、[OK]をクリックして終了します。

Baseを使用してODBCデータソースに接続

LibreOffice Baseを新規に作成します。
すると、下図のようにダイアログボックス「データベースウイザード」が表示されますので、ラジオボタン「既存のデータベースに接続」をONにし、プルダウンメニューから「ODBC」を選択して[次へ]をクリックします。

すると、下図のように「ODBCデータベースとの接続のセットアップ」画面が表されますので、「システム上のODBCデータソースの名前」と書かれた下の欄にデータソース名を入力するか、または右端にある[参照]をクリックして表示されるダイアログボックス「データソース」から接続したいデータソース名を選択します。ここでは前節で登録した「address_data」を選択し、[OK]をクリックします。

下図のようにデータソース名「address_data」が設定されたところで[次へ]をクリックします。

すると、下図のように「ユーザー認証のセットアップ」画面が表示されますので、[接続のテスト]をクリックします。

しばらくすると、下図のように「接続が正常に確立できました。」と表示されますので、[OK]をクリックし、画面下方の[次へ]をクリックします。

すると、下図のように「データベースを保存したあとの処理を決定してください」という画面が表示されますので、デフォルト設定のまま、[完了]をクリックします。

すると、下図のように「名前を付けて保存」という画面が表示されますので、パスと任意の名前を設定します。ここではファイル名を「address2.odb」と設定し、[保存]をクリックします。

すると、下図のようにBase編集画面が開き、テーブル名のリストが表示されます。なお、この例ではクエリーオブジェクトの「道の駅マスタークエリ」がテーブルとして継承されています。(古いバージョンのAccessによる不具合です。)

(注)上図のフッターに注目して下さい。左端の表示が標準の「埋め込みデータベース」ではなく、「ODBC」になっています。また、その右側を見ると「HSQLDB(埋め込み)」ではなく、ODBCデータソース名address_data」が指定されていることが分かります。

これでテーブルのレコード内容やテーブルデザインを閲覧することが可能になりました。また、Base編集画面を終了する際に保存動作をすると、次回からは「address2.odb」を直接ダブルクリックして開くことが可能になります。

JDBC経由で開く方法

JDBCとは

JDBC(Java Database Connectivity)とはJavaプログラムからDBMSにアクセスするための標準インターフェース(API)のひとつで、いわばODBCJava版のことです。

MicrosoftのJava環境のインストール

最初にOpenJDK 17Windows版)を手元のPCにインストールします。
下記URLにアクセスします。
https://docs.microsoft.com/ja-jp/java/openjdk/download
ページを下げていくと下図のように「OpenJDK 17」のプラットフォームごとのバージョン表が見えてきますので、下図のようにWindows(X64)用のmsiファイル「microsoft-jdk-17.0.1.12.1-windows-x64.msi」(赤い破線で囲ったファイル)を選んでクリックします。

すると即座にダウンロードが開始します。
ダウンロードが完了したら「microsoft-jdk-17.0.1.12.1-windows-x64.msi」を実行します。
すると、「Microsoft Build of OpenJDK with Hotspot 17.0.1+12(x64) セットアップウィザード」が起動しますので、画面の案内のとおり操作してセットアップを完了させます。

UCanAccessのインストール

UCanAccessOpenJDK 17の外部ライブラリとして使用するものです。これによってmdbファイルに接続することが可能になります。
下記URLにアクセスします。
http://ucanaccess.sourceforge.net/site.html
すると下図のようにUCanAccessのサイトが表示されますので、緑色のボタン「Download UcanAccess 5.0.1」をクリックします。

すると、下図のようなdownloadページが表示されますので、「UCanAccess-5.0.1.bin.zip」(赤い破線で囲ったファイル)をクリックします。
すると即座にダウンロードが開始します。

ダウンロードが完了したら「UCanAccess-5.0.1.bin.zip」をクリックして解凍して下さい。
解凍すると「UCanAccess-5.0.1.bin」というフォルダーが見えますので、それをドライブ「C:\」の直下にコピーして下さい。
画面は次に進み、「Thank you for download…」とメッセージが表示されますが、目的を果たしたので、ここでブラウザーを閉じて結構です。
下図がフォルダー「UCanAccess-5.0.1.bin」をドライブ「C:\」の直下にコピーした状態です。

ここでPCを再起動します。

クラスパスの指定

LibreOfficeのメニュー「ツール>オプション」を選択します。(起動されているコンポーネントはBaseWriterCalc等、どれでも結構です。)
すると、下図のように「オプション」画面が表示されますので、左ペインで「LibreOffice>詳細」を開きます。
次に右ペインの「Javaオプション」欄のチェックボックス「Java実行環境を使用」をONにし、「インストール済みのJava実行環境」と書かれた下のボックスから「Oracle Corporation」を選択します。
右端にある[クラスパス]をクリックします。

すると、下図のようにダイアログボックス「クラスパス」が表示されますので、[アーカイブを追加]をクリックします。

すると、下図のようにダイアログボックス「アーカイブの選択」が表示されますので、前節で設置したフォルダー「UCanAccess-5.0.1.bin」直下のフォルダー「Loader」に格納されたファイル「ucanload.jar」を指定し、[開く]をクリックします。

すると、「クラスパス」画面に戻り、パスが設定されますので、[OK]をクリックします。

すると、下図のように「オプション」画面に戻りますので、[適用]をクリックして「オプション」画面を閉じます。

ここで起動しているLibeOfficeのコンポーネントは一旦終了させます。

Baseを使用してJDBCデータソースに接続

LibreOffice Baseを新規に作成します。
すると、下図のようにダイアログボックス「データベースウイザード」が表示されますので、ラジオボタン「既存のデータベースに接続」をONにし、プルダウンメニューから「JDBC」を選択して[次へ]をクリックします。

すると、下図のように「JDBCデータベースとの接続のセットアップ」画面が表されますので、「データソースURL」と書かれた下の「jdbc:」欄に「ucanaccess://」と入力し、それに続けて、開こうとしているmdbファイルのパスを入力します。この例では「C:\work\address.mdb」がパスになります。
JDBCドライバークラス」と書かれた下の欄に「net.ucanaccess.jdbc.UcanloadDriver」と入力します。
右端にある[テストクラス]をクリックします。

しばらくすると、下図のように「JDBCドライバーが正常に組み込まれました。」と表示されますので、[OK]をクリックし、画面下方の[次へ]をクリックします。

すると、下図のように「ユーザー認証のセットアップ」画面が表示されますので、[接続のテスト]をクリックします。

しばらくすると、下図のように「接続が正常に確立できました。」と表示されますので、[OK]をクリックし、画面下方の[次へ]をクリックします。

すると、下図のように「データベースを保存したあとの処理を決定してください」という画面が表示されますので、デフォルト設定のまま、[完了]をクリックします。

すると、下図のように「名前を付けて保存」という画面が表示されますので、パスと任意の名前を設定します。ここではファイル名を「address3.odb」と設定し、[保存]をクリックします。

すると、下図のようにBase編集画面が開き、テーブル名のリストが表示されます。なお、この方法でもクエリーオブジェクトの「道の駅マスタークエリ」がテーブルとして継承されています。

(注)上図のフッターに注目して下さい。左端の表示が標準の「埋め込みデータベース」ではなく、「JDBC」になっています。また、その右側を見ると「HSQLDB(埋め込み)」ではなく、JDBCデータソースURLucanaccess://C:\work\address.mdb」が指定されていることが分かります。

これでテーブルのレコード内容やテーブルデザインを閲覧することが可能になりました。また、Base編集画面を終了する際に保存動作をすると、次回からは「address3.odb」を直接ダブルクリックして開くことが可能になります。

 

タイトルとURLをコピーしました