書籍散策マイクロソフト・アクセス関連書籍Twineトップページ>書籍散策>マイクロソフトアクセス関連 データベースソフトと言うと、普通の場合、日常的に使う場面も少ないので抵抗あるかも知れませんが、これって使い出すと便利ですね。今使っている請求書や領収書などは相手会社のデータを入れて自社商品全ての単価を入れたデータベースを構築して使っています。表計算などで作るよりはるかに自由度が高く重宝しています。アクセスの場合、基本書をしっかりと読んでそのホネを理解した上で、色々な小さなデータベースを自分で作ってみると良いと思います。 たとえば会社の社員全員の名札とかをワープロソフトで作るのではなく、データベースソフトで作ると、社員の移動があったり肩書きの移動があっても柔軟に対応できますよ。 エクセルと同じく考えると失敗する・・・Twineが昔、全く知らなかった事を告白しましょう。 昔、ある場面で「アクセスはアクセスだった・・。エクセルとは違うなぁ」と言うのを自覚したことがあります。 それはこんな場面でした。仮にテレビ、ラジオ、DVDと言う商品と価格のテーブルを作ったとします。
このテーブルを作り、これを価格別にソート(安い順)にするクエリを作るところまでは簡単にいきました。↓
・・・ここからが問題。 上のクエリに「順位」のデータを加えたい・・・となると、妙にやっかいな話になってしまいます。
クエリのデータに連番を加えたものをつくるのは難しいワザエクセルを知っている人ならば、オートフィル使って上から順番に「1」「2」「3」位のように簡単に順番を振れそうなんじゃない?と考えますよね。 しかし、アクセスのクエリではなかなかそうは問屋が卸しません。 結論から言うと、アクセスのクエリ結果に出ている「行」にはその位置関係について相関関係はありません。たまたま一行目〜三行目にこれらのデータが出ているだけで、データ自身に自分の「クエリで表示された場合の行の位置関係」情報は入っていないのです。 そこで、解決策としては(1)一度エクセルにエクスポートして順位をつけてから再インポートする(2)ちょっと荒業だけど、このクエリをテーブルに書き出して、テーブルにオートナンバーを設定した「順位フィールド」をつくる(3)Dcount関数(データが多い場合はcount関数を使ったほうが良いかも)を使ってカウントした結果を表示する(4)VBAでガシガシとコーディングする しかないんです。 「なんでそんな面倒な事を?」と、普通の場合思いますよね。 実はエクセル(表計算)と、アクセス(データベース)は見た目は一緒でも、基本的な構造が違うんですね。 表計算ソフトの場合、タテ(行)、ヨコ(列)の細かいセルが一枚の大きな表のようになっていて、その中でデータを処理しています。「大きな表」の中で、例えば「A列1行」のように、自分自身の座標を持ちながら作業をしているわけです。ですから、その環境によって最大の座標(エクセル2003の場合だと 65536行×256列 、といった具合)が決まっています。ですから行情報を手がかりにしてデータの操作を行う事ができます。(「最初の行を1として次の行からそれプラス1の演算を行う」といった事が可能になる) ところがデータベースは、レコードが処理の基準になります。(ここには座標と言う観点はありません)。順番に関係なく「データベース」と言う器の中に入れられて行きます。そこで必要なものを「クエリ」と言うフィルターにかけて取り出して見ているわけです。クエリで見ている「行」には位置情報によるつながりはありません。だから「クエリの最初の行を1として次の行からそれプラス1の演算をおこなう」と言った操作は元々できないわけです・・・ ちなみにデータベースで言うテーブルとは、データを保存する表の事。テーブルはフィールドとレコードから構成されます。レコードとは、テーブルを構成する横一行のデータの集まりです。上の例で言うと060(商品番号) ラジオ (商品名)50円 (価格)が一つのレコードです。フィールドとは、テーブルを構成する縦一列のデータの集まりです。上の例では「テレビ」「ラジオ」「DVD」と言った商品名が一つのフィールドになります。 ですから、上の「答え」のうち(1)、(2)は例外ですが、通常アクセスのクエリ結果に連番を振ろうとすると、(2)か(3)の手順を使って一つのレコードのデータから見て、自分と同じ又はそれ以下の数のものをフィールドの中から探してきてカウントしながら自分のレコードの相対的な位置を知る手順を踏まないとだめって事なんですね。 具体的に言うと、たとえばDcount関数を使った場合、場合「ラジオは50円」だと言うのですから、価格のフィールドから「50円と同額か、あるいは50円より安い値段のレコードが何件あるか」を調べます(カウントする)。 するとラジオは50円ですから1件と言う事になり「1」の答えが返ってくる仕組です。同様にテレビは100円ですから、同額の100円のテレビ自身と、100円より少ないラジオ=50円があるので答えは「2」・・・って具合です。 ・・・それでやっとアクセスでの「順位」が出来上がるわけです。(ただし上の場合同じ値は同じ順位になります→たとえば50円のデータを持つものが二つあると「2位」が二件発生します。) ・・・疲れますね(笑) でも、これがあるからデータをたくさん格納して、そのデータを活用する「データベース」のはたらきができるのでした。 マイクロソフト・オフィス・アクセスに関するおすすめ本
サイト内検索Twineサイト内でお探しのものが見つかるかも知れません。 |
ウエブ作成・維持管理 |