目次へ   図書管理  P.13

入力時の日付書式を整形する


年月日の書式統一は後ほどの検索で重要になります。
日付の入力は人によってさまざまです。マニュアルで説明するより、どのような入力方法をとっても計算式によって同一形式に整形してくれるなら入力のストレスもかなり軽減されます。
ここでは2001年7月7日の場合、2001-07-07の形に統一します。

以下は「図書貸出」ファイルの「貸出日」項目の計算式設定です。
複雑な入れ子構造になっているので、下に分割してその意味を記します。
(説明は「貸出日」の計算式だけですが、「返却日」も同様です)
この計算式によって、1/7/7と入力しても2001-07-07となります。
01/7/7/でも、01/07/07でも、01/07/7でも、001/7/7でも、2001/7/7でも可。
-のかわりに、/でも、.で区切ってもちゃんと同じ日付書式を返してくれます。
これくらいに融通をもたせないと入力する人には不便だと思います。



@〜C‥西暦をフルナンバーに整形する
@=@match(貸出日,"/-.")
"/-."のいずれかの文字が入力された「貸出日」データの左から何文字目にでるか

A=(5-@)
入力データの先頭が「2001-」の場合、「-」が5文字目にあるので入力データには何もつけません。5文字目−◇文字目を引くと、左からあといくつ足りないかわかります。

B=@mid("2000",1,A)
"2000"の左1文字目から足りない分A文字分を切り取ります。

C=@add(B,貸出日)
足りない文字Bを入力データ「貸出日」の頭につけます。
D〜E‥日付が一桁の場合直前にスペースを入れる
D=@todate(C)
日付Cを日数に置き換えます。

E=@day(D)
日数Dを日付に置き換えます。
※日付→日数→日付 この反復によって日付の書式が統一されます。
 (2001-7-7と入力されても2001- 7- 7と一桁の日付にスペースが入ります)
F‥一桁の日付スペースを0に置き換える
F=@replacechar(E," ","0")
G‥「貸出日」項目に入力データがないときには何もしない
G=@if(貸出日<>"",F,)
※貸出日<>""とは項目「貸出日」が無(nul)でない、という意味です。
H‥「生徒番号」が削除コード999でない場合に@〜Gの処理を行う
貸出日=@if(生徒番号=999,"****",G)
※生徒番号が999のときは「貸出日」に****が入力されます。
以上の計算式を「貸出日」「返却日」「書出日」に設定します。
「書出日」の場合はD〜Fまでの計算式で十分です。(書出日には必ず現在の日付が入りますから)
以下のとおりです。


結果は次のとおりです。
「書出日」は表示されておりません。

「図書原簿」の「受入年月日」についても設定
「貸出日」の計算式を「図書原簿」の「受入年月日」にコピーします。

「図書貸出」ファイルを開きます。
メニュー〈デザイン〉→〈DB設計〉→〈計算式〉
下のように該当個所をドラッグしてコピーします。
コピーしたら〈計算式〉ウィンドウは閉じてしまいます。


「図書原簿」ファイルを開きます。
メニュー〈デザイン〉→〈DB設計〉→〈計算式〉
「受け入れ年月日」の計算式を設定します。
=のあとに先にコピーした計算式を貼り付けます。
「貸出日」を「受入年月日」に変更します。
設定が終わりましたら「OK」をクリックします。
※〈項目名〉を選んで〈項目の追加〉ボタンを使うと便利です。


出版年の入力の簡素化
「図書原簿」の「発行年」を入力する場合、和暦(平成など)から西暦に置き換えることがわずらわしい場合があります。これも計算式でクリアしましょう。

TheCARDではこれが結構面倒です。計算式は以下のようになります。

@toad関数が各年号ごとの対応なので、計算式が4行になります。
平成10年の場合は、H10またはh10で入力できます。
昭和の場合は、Sまたはsを、
大正の場合は、Tまたはtを、
明治の場合は、Mまたはmを使います。

計算式の内容の説明(平成の場合の説明ですが、昭和以下同様です)
@=@mid(出版年,2,)
入力データにはHなどの年号がついていますから、この文字を取ります。
(H10の場合、10だけにします)
※「出版年」項目の入力データの2番目の文字から切り取る、という意味です。

A=@add(@,"-1-1")
「出版年」データは〈年〉だけなので、ダミー"−1−1"(1月1日)を付けます。
(H10の場合、10-1-1となります)

B=@toad('H',A)
和暦年月日データ(この場合平成)を西暦に変換します。
(H10の場合、1998-1-1となります)

C=@left(B,4)
年月日のうち〈年〉だけのデータを取り出します。
(H10の場合、1998となります)

出版年=@if(@match(出版年,"Hh")>0,C,)
「出版年」にHまたはhの文字が入っている場合だけ@〜Cを実行します。そうでない場合はそのままです。
ところが、M32以前(つまり明治32年以前)ではこの計算式は働きません。
このことについて計算式の注釈文(/----以下)でメモしておきます。
「出版年」にm32を入力すると〈警告メッセージ〉が出ます。
m32は1899年にあたり、TheCARDでは1900年以前はサポートされていないようです。