第9回 データベース 「6.Palmに名前を覚えてもらおう その1」
|
|
9−6 Palmに名前を覚えてもらおう その1
一通り、データベースコマンドを見てきたところで、サンプルを作ってみましょう。 内容は簡単です、Palmに名前を入力すると、その名前を記憶しておいてくれて、起動すると、名前を表示してくれるだけのアプリです。 簡単すぎ?ま、入門用ですからネ。 最初にプログラムの仕様を決めましょう。
これを元に、おおまかなフローチャートを考えてみました。 ![]() 仕様と比べると、なんだか難しそうですね。 そう、表に見える部分はとても単純そうですが、データベースを使うと内部的には複雑になります。 これは、データベースを取り扱う場合は仕方がないことで、例えば、データベースの有無をチェックする必要がありますし、また、必要なレコードがあるかないかをチェックしなければなりません。 もし、これらの処理を怠って、データベースがないのに、開こうとしたり、書きこもうとすると、最悪の場合、システムが落ちてしまいます。 ということで、多少複雑になるわけですね。(ま、パームなら、リセットするだけですけどね。) では、これを順にプログラムにしていきましょう。 まず、最初の部分ですが、まず、Starup()でデータベースファイルを作成します。 なぜなら、その次に、データベースから名前を読み込みますので、それまでにデータベースが存在しなければならないからです。 でも、次のデータベースチェック時に作っても遅くないジャン、と思われるかもしれません。 確かに、それでも良いでしょう。 ただ、次の部分は、FormのAfter()に記述する予定で、フォームがRedrawされると、何度も実行される可能性のある部分ですので、この中に余分な処理を置くよりも、この中には既に「データベースが存在する」という前提で作った方がスッキリすると判断し、分けて設計しました。 したがって、Startup()では、データベースの有無をチェックして、なければ作っておく、という処理を置くことにしましょう。 今回のサンプルは、BASIC講座第9回のサンプルなので、クリエータIDはBasic講座のTestの9番目、と言うことで、TeB9としました。 したがって、データベース名は、"SampleB09-TeB9"です。もし、クリエータIDがかぶったらゴメンナサイ。 Dim Dbx as Database Dim res as Integer res=DbOpen(Dbx,"SampleB09-TeB9",0)これで開きます。 もし、何らかの理由で開かなかった場合(大抵は最初にアプリケーションを起動してデータベースが存在しない時です)、戻り値 resが 0以外になりますので、この時はデータベースがないものと見なし、データべースを新規作成しておきます。 あった場合は、そのまま閉じておきます。 If res<>0 Then res=DbCreate(Dbx,"SampleB09-TeB9",0,"TeB9") Else res=DbClose(Dbx) End ifここで、注意するのは、DbCreate()がデータベースファイルを作るだけ、と言うことです。 DbCreate()でデータベースが作られた後は、開かれている状態ではありませんので、それを閉じる必要はありません。 まず、Startup()は、このくらいで良いでしょう。 さて、続けて、データベースから名前を読み取りましょう。 今回は、取り扱いの安定しているキーモードのデータベースとして、"username"というキーのレコードに名前を登録するようにしました。 なので、もし、"username"というキーがあれば、読みとって表示、なければ、名前の登録画面を開くようにしました。 まずは、開いて、"username"というキーのデータを読み取ります。
Dim Dbx as Database
Dim res as Integer
Dim sName as String
res=DbOpen(Dbx,"SampleB09-TeB9",0)
res=DbRead(DbX,"username",sName)
この時点で、既に、データベースは存在している「はず」ですので、開く時のエラー処理は、ま、要らないでしょう(甘いか?)で、DbRead()で読み取った結果、res=0 の時は正常ですから画面に表示し、なければ、名前登録の画面に移ります。 If res=0 Then DrawChars "welcome! "+sName,20,50 res=DbClose(Dbx) Else res=DbClose(Dbx) NextScreen "Form1006" End If名前を表示する際、その長さが未知数ですので、画面上に直接描画するDrawCharsコマンドを使いました。今回の用途には十分ですからね。 そして、名前を表示したら、データベースは必要ありませんので、閉じておきます。 一方、読み取れなかった時はデータがない時、と見なしてもう1つの画面に移ります。 NS Basicでは複数のフォームを使うことができ、作成時、IDE画面から「Add Form」で新しいフォームが追加できます。 これらの複数のフォームをプログラム中から切り替えて使うには、NextScreenコマンドを使います。 NextScreen FormName これで、そのフォームが開きます。 注意するのは、ローカルで宣言してある変数類は、一切保存されないことです。 そう、スコープってヤツですね(忘れた人は、第2回 変数を使う、を参照のこと!) したがって、各フォーム間で共通で利用したい値がある場合、Global定義するか、データベースを利用します。 今回は、名前の登録と読み込みだけですので、後者の方法ですね。 |
第9回 データベース 「6.Palmに名前を覚えてもらおう その1」
|