kr_ryo 徒然日誌 <2004年10月10日分>

三國志製作記77〜苦闘激闘!データベース〜

タイトルからして内容が推測できますが…(^^;A今週はせっかくの3連休なのに、またも週末台風です(~_~;)そのため今週はじっくりデータベースのお勉強ができるだろう、と企んでいました(^-^)さらに、今までの椅子は長時間座っていると座骨が痛くなり、そのうち腰が痛くなり、往生したので(T-T)椅子も新調しました(^O^)会社で使っているレベルの座り心地のいいものを探してまたもさまよい(^^;A8980円也!最近すっかり買い癖がついてきましたね(^^;ともあれ、これでじっくり勉強できるというものです(^^;

データベースといえば、MSAccessやらOracleやらが有名です。その昔、仕事でデータベースの方がエクセルより便利なのだが…と、アクセスを勉強したことがあります。いやあ、わかりずらい(;_;)クエリーやらテーブルやら、意味を理解するのに非常に苦労しました(T-T)その手の本を読みつつ、試しつつ、だましつつ(^^;なんとかわかると、ふむ、こりゃ便利(^^;;

要するに、データとテンプレート(雛型)を別にして考えるということでした。よくよく考えるとプログラムもそうですね。プログラムの場合、データとプログラム部分を今度は一体と考えると、一時期よくお話した(^^ゞオブジェクト指向になります。エクセルではデータもテンプレートも一致して分離しがたくなりますから、整形するのに時間がかかる定型の帳票も、アクセスではデータを差し替えるだけですんで便利!(^-^)

まあ、アクセスにせよエクセルにせよ、微妙に癖があるので、連携させて使うのが一番いいようです。そんなこともあり、アクセスでデータベース思考にもそれなりになれています。さて、Delphiのデータベースはどれだけ難しいことやら…?

Delphiを持ち帰った日、箱もでかけりゃ中身もむっちゃ重い(T-T)と思っていました。開けてびっくり分厚いマニュアル!( °O °;)いや、もちろん予想してましたけど(^^;;;5ミリほどの厚さのセットアップガイド、1センチほどの言語ガイド、そして5センチほどの開発者ガイド!合計6センチ強の紙の束です。そりゃあ重いわ…(~_~;)

だいたいDelphi6パーソナル版はマニュアルなんぞなく使用していたので、この紙の束を見るとげんなりしますよね…(--;さあ、今日からプログラムを買って勉強するぞっ!と意気込んで10数センチの箱を開けると、こんな分厚いマニュアルが出てきたら…やる気を失いそうになるに違いない(^^;私もVC++に手を出さなかったのは、多分途中でやる気を失うと思っていたからです(~_~;)これを読まないとわからんとなると、どうしようもない(*_*)さて、読むか…?

その点Delphi6パーソナル版はヘルプ以外な〜んにもないので、チュートリアルを参考にいじくってみて、だめならどうやったらいいのかなんとか探し出そうとします。私の場合、さらにたまたまパーソナル版とともに発売された本で勉強してきました。教訓。勉強はマニュアルを読むことではなく、まずお手本通りに触ってみよう(^^;

はっきり言ってこの分厚いマニュアルを最初から全部読むのは間違っています(~_~;)「当面」関係ないことの方が多いです。ぱらぱらめくって必要そうなところだけを読むくらいでいいです。これから勉強する人はその辺に気をつけましょう。分厚いマニュアルにさらに分厚い参考書を揃えても、使えなきゃ意味がありません。と、いうことで、私もさっそくパーソナル版の時よりも増えた部品を使ってみましょう…………なんじゃこりゃ(T-T)

プロフェッショナル版では、パーソナル版と異なり、データベース関連、インターネット関連のプログラム部品が大幅に増えています。というより、それしか増えていません。インターネット関連はさておき、データベース関連の部品も、似たようなものがたくさんあります。DataAccess、Datacontrols、dbExpress、BDE、ADO、Interbase…実はさらに関連するものもあり、もっと多いのですが、基礎となるものだけでこれだけあります。このなかに、datasourceやらDBgridやら部品が詰め込まれています。んんん???

データベースという名前の部品やら、クエリーという名前の部品やら、テーブルという名前の部品やらもあります。これを適当に並べてみて動きを確認してみましょう……なんにも動きません(T-T)というより、これをどうするんでしょう?(ToT)

早くも挫折気味(-o-;)あっさり諦めて、オフィシャルコースウェアという参考書を読んでみましょう(^^;図書館で昔借りましたが、改めて借りると、、、これまた重い(T-T)これもA4版で5センチはある紙の束です。ああ(T-T)

お手本があり、その通りに作っていけばだんだん意味がわかってきました(^-^)CDでデータベースのもと、というか、データベース(としてのファイル)のサンプルもついており、これを元に部品を組み合わせて作ります。

なるほど…先程の英語の羅列は、前の2つを除き、データベースエンジンの違いだったのです。普段は組み合わせて使うわけではなく、データベース(としてのファイル)や機能やネット上で使うかどうかなどに違いがあるので、どれかを選択すればよい、と、いうことでした(^^;;interbaseに至っては、作っている会社も違います。プラグインみたいなものかしら?

データベースも、AccessやOracleだけでなく、ParadoxやらDB2やら、各種様々な種類があるんですねえ〜(^^;;はっきりいっていくらデータベースの勉強といえども、こんなに詳しくやる必要はありません(^^;;使えればいいんです、使えれば…その意味では、専門学校や資格試験でいくら勉強しても、何に使うか、という動機付けがなければきっと全然身につかないことでしょう(~_~;)そんなことはさすがに受験勉強で懲りています(^^;;

で、何に使うか。言うまでもなく、三國志の武将データをデータベースで簡単に検索したり修正したりすることです。どうやらそんなにたいそうなデータベースエンジン!とやらを利用せずとも、ファイルからデータを読み込み、後はその部品に対する命令だけで、データベースとして利用できるものを、あの分厚いマニュアルのデータベースの使い方を拾い読みして見つけました(^^;;実はヘルプと見比べてみると、ヘルプと分厚いマニュアルとでほとんど同じことが書かれていたりするのです。恐るべしヘルプ…(;^_^Aなるほど、パーソナル版の時、ヘルプだけで対応できたはずです。本を読まなくともヘルプだけで対応はできるのです。

ところが、ここからが問題。まず先程のメモリ上にデータベースを読み込んで操作する部品、長いのでクライアントデータセットと正式に呼びますが、これに、どうやって例の三國志武将名簿を取り込むか、です。一から入力すればいいんですが…まさか、また入力するのは馬鹿げてます(~_~;)せっかくファイルがあるのに……どうにかしてこれを使いたい。しかし、クライアントデータセットは直接このファイルを読めません。こいつにファイルを食べさせる方法、これが第一の問題です。

まず、xlmというファイルなら取り込めるようです。どっかで聞いたことがあるな…ファイル形式からして、IEで使うファイルのようです。色々調べると、htmlの発展型、とはいわないものの、どうやら構造化文で、単なる文章ではなく、機能の意味のあるタグがついたファイルのようです。テキストをこれに変換して、それを読み込ませてみよう…vectorやら何やらで色々探してみて、xml変換ソフトを見つけました(^-^)変換してみて……読まない!(T-T)どうも、クライアントデータセットで使うxmlは特殊な書き方のようで、単純にテキストをxmlに変換しただけでは読み取れないようです。実はDelphiにもxml変換機能はあるはずなんですが……エンタープライズ版のみ!(ToT)

単なる変換だけで利用するだけなのに、わざわざまたxmlを勉強するより、他に方法はないか?どうやらクライアントデータセットは、先程の各種データベースからのデータを取り込むこともできるようです。そして、各種データベースの中には、アクセスやエクセルのデータを読むこともできるようです(^O^)

ところが……どうも、うまく取り込むことができません(T-T)Delphiにとって、ParadoxやdBASEといった(私のよく知らない(^^;A)形式の方が譜代で、アクセスやエクセル形式は外様のようで、はっきり使い方が書いていません。例のオフィシャルコースウェアは、もともと準備してあるだけでなく、Paradox形式のファイルのようなので、あまり参考になりません。マニュアルの方にもそれらしい部分はあるものの、どうも何をいっているのかよくわかりません。他にちゃんとあって、見つけ方が悪いのか、それとも書いていないのか?(T-T)

ともかくこういう具合に使う、とあるように、設定や数値をいじりいじると……動きません(T-T)データベースのエラーはプログラムと独立しており、パラメータが不正です、とか、環境変数が設定されていません、とか、だけで、どこの?という具体的な説明がなく終了するものばかりです。これは困った(*_*)

あれやこれやいじりまくり、オフィシャルコースウェアを繰り、マニュアルをめくり、ヘルプを検索する……いくら勉強とはいえ、なぜこれ(ある操作)で動かないのか、理由がわからないとだんだん心配になってきます。もしかすると、あっさりできたインストールからして間違っているのではないか…?

そういえば、前回も指摘したXPのルナデザイン風アイコン。見た目も気色悪いながら、設定ダイアログをあれこれいじくるうちに、ちゃんと表示されなくなります(ToT)こんなことなら最初からおとなしい普通のアイコンの方がいいじゃないか…(~_~;)機能が増えたせいか、起動もやや遅で、正常終了しないこともたまにあります。むむ…!

そんなこんなで、かなりめくってみて探してみても見つかりません(T-T)どうやらこれは、説明もれか、当たり前すぎて書いていないのかもしれません。改めて、サンプルがどうなっているのか見てみましょう……

で、正解の道は実はこれでした(^^;A最初から用意されているサンプルを見て回りつつ、マニュアルを読んだりしてみます。サンプルで使用しているデータベース関連のパラメータは、なぜかDBDEMOSと怪しい表現をしています。データベースデモ…?どうやらデータベースの設定専用の機能がコントロールパネルにあり、ここでそのDBDEMOSがアクセスやらParadoxやらのファイル設定が並んでいます。マニュアルにも、よくわからなかった表現で書いていました(^^;AどうやらDelphiで操作するんでなく、コントロールパネルから操作するみたいです。

そしてさらに。Delphiのメニューバーのデータベース、というところにたったふたつだけ項目のある1つ、これまで触ったことのないデータベースエクスプローラ、という機能、このパネルのメニューバーのODBCアドミニストレータ、とやらの設定で、データベースとして使用するアクセスやエクセルのファイルの場所を指定すると…開いた!(^O^)青い鳥ではないですが、なんと身近なところにいたことよ(x_x)実はさわってなかったのは使いみちがわからなかったせいですが、マニュアルにも今から思えばそれを使え、という意味のことが書いていました(^^ゞ曰く、データベースを利用するプログラムが、データベースのファイルの位置が変わるごとに使えなくなることを避けるため、データベースの位置を指定する機能を、プログラムとは別に準備しています、と。ああ!( °O °;)

で、名簿テキスト→エクセル→アクセス→BDEデータベース→BDEテーブル→クライアントデータセットと、何度もいろいろ経由して、ようやく…できた!(^O^)いやあ、苦労しました(T-T)それでも、この、単にデータを移したい!という思いだけで、かなりデータベースの使い方が身につきました(^^;Aところがこれでようやく序の口で、データを保存するときにファイルが多く必要になるが1本にまとめたい、とか、データ項目をプログラム設計時に自由に入れ換えたい、とか、色々思いはあります。どうも、なかなか癖があるようで…(~_~;)データベースを導入するなら本体の設計も変わるので、ちょっとデータベースを使えるレベルにするまで、まだもうちょっと勉強したいと思います(^-^)

index

〔TopPage〕

このページへのリンクはフリーです。
このページについてのご意見、ご質問などは、kr_ryo_green@yahoo.co.jpまでお願いします。
Copyright 2004© kr_ryo All rights reserved.
訪問件数