蝸牛の歩み

蝸牛の如く,ゆっくりでも着実に前へ・・・

Accessによる収蔵資料データベース

先日、収蔵資料データベースをThe CardからAccessに移行したいという話を書いたが、試行錯誤しながら移行を進めている。データ自体は全く問題なく移すことができた。

問題はデータの追加である。データベースは正規化ウィザードを用いて4つのテーブル−資料テーブル(T_Collection)、種名テーブル(T_Species)、採集地テーブル(T_Locality)、採集者テーブル(T_Collector)−に分割した。クエリ(Q_Collection)で、元の一覧の形として見ることができる。データを追加するときに、Q_Collectionに対してデータをINSERTするとそれぞれのテーブルにレコードが追加される。なかなか便利。ところが、新規データだけじゃなくて、各テーブルに既存の同一データがある場合でも、レコードが追加されてしまうのだ。どういうことになるかというと、例えば種名テーブル(T_Collection)に分類群、和名、学名が全く同じレコードが複数できてしまう。これではテーブルが単に4つに分割されただけで、正規化した意味が全くない。希望としては、既存の種であれば種名テーブル(T_Species)には追加せず、T_Collectionには既存の種IDが入力されてほしいのだが。かといって、種名テーブル(T_Collection)に複合インデックスを作成して重複を許さないようにすると、クエリ(Q_Collection)にレコードがINSERTされない(特にエラーは出ないのだが)。

ひょっとして、あらかじめ各テーブル(T_Species、T_Locality、T_Collector)にデータがあるかどうかSELECTして、なければINSERTして、最後に資料テーブル(T_Collection)にINSERTしないといけないのだろうか。

もう一つ、いまいちスマートにいってないのがラベルの印刷である。選択したレコードだけラベルを印刷したい場合がある。ところが、ExcelではCtrlを押しながら行をクリックすれば連続していない複数行を選択することができるのに対し、Accessでは連続行しか選択できない。連続行を選択したとして、その選択したレコードをレポートで印刷する方法もわからない。仕方がないので、表形式のフォームにチェックボックスを設けた。ただ、連続したレコードを一度に選択する方法がなく、チェックボックスをマウスでポチポチとクリックしながら選択しなければならないというのは何とも面倒くさく、あまりいいインタフェースとは思えない。