目次へ   図書管理  P.43

貸出・返却業務

サブフォーム用「貸出」ボタンのコマンド設定の修正
修正前のコマンド行(左・P.26参照))と修正後のコマンド行(右)ではかなり違います。(点線部分が同一です) それで、これからの説明は追加された行だけでなく、すべての行を説明します。

「図書貸出」ファイルを開きます。〈レイアウトモード〉にして「貸出」ボタンを右クリックして〈コマンド〉を選びます。で囲まれた部分は以前から入っているコマンドです。

〈コマンド設定〉1行目
〈カテゴリ〉から〈フォーム〉を選び〈コマンド一覧〉から〈カレントフォームの指定〉
〈データベース〉は「図書貸出」、〈フォーム〉は(カード)です。
作業ファイルを「図書貸出」ファイルに切り替えます。

〈コマンド設定〉2行目
〈カテゴリ〉から〈一括〉を選び〈コマンド一覧〉から〈一括転記〉、〈手順書〉は「生徒名簿へ書籍コード転記」です。
現在表示中(検索中)の図書カードから「書籍コード」を、○印をつけた「生徒名簿」カードに受け渡します。
〈コマンド設定〉3行目
〈カテゴリ〉から〈一括〉を選び〈コマンド一覧〉から〈一括訂正〉
〈手順書〉は「貸出×」です。
これは現在開いている図書カードに印をつけるための処理です。
「図書貸出」ファイルの「貸出」項目には全カードに○印が入っていますが、現在開いているカードだけ×印をつけ他と区別します。該当図書カードがある場合はこの処理は意味を持ちません。新規図書カードになった場合いったん検索が解除されるため入力中の図書カードが画面から消えてしまいます。それを再び表示させるためのしるしです。(解除されないようにできないか試したのですが、できなかったので苦肉の策なのです)

〈コマンド設定〉4行目
〈カテゴリ〉から〈検索〉を選び〈コマンド一覧〉から〈検索結果を連結〉
〈検索結果を連結〉のチェックははずします。
同じ「図書貸出」ファイルで他の検索を実行するため画面表示が乱れます。表示中のカードと検索中のカードとの関連を解除するコマンドです。これにより画面に無駄な変化を起こさなくなりスマートです。(ほとんど意味が無いことがわかりましたので削除)
〈コマンド設定〉4行目
〈カテゴリ〉から〈検索〉を選び〈コマンド一覧〉から〈ダイアログ検索〉
〈手順書〉は「表NO−2」です。
手順書名は変ですが、「表組行に2行目がある場合」という意味でした。その後試してみて1行目にすでにデータが入っていることもあり、表組行を検索するのではなく、表組項目「貸出日」にデータがある場合を検索しています(つまり貸出日の先頭に2のつくデータがあるかを判断しています。2001-11-03など)。手順署名は以前のままを使いました。
〈コマンド設定〉5行目
〈カテゴリ〉から〈条件分岐〉を選び〈コマンド一覧〉から〈条件分岐〉
〈検索件数〉のラジオボタンがオンになっていることを確認して、
▼(リストボタン)から  を選び、値は 0 
〈成立時のジャンプ先〉として 新規カード 
〈不成立時のジャンプ先〉として 該当カード と入力します。
表組項目にデータが無い場合は上のコマンド結果の値として0が送られます。条件に合っているのでラベル「新規カード」のコマンド行にジャンプします。条件に合わない場合(表組項目にデータが発見された場合)はラベル「該当カード」のコマンド行にジャンプします。

〈コマンド設定〉6行目
〈カテゴリ〉から〈一括〉を選び〈コマンド一覧〉から〈一括訂正〉
〈手順書〉から「貸出○」を選びます。
〈ラベル〉名として 該当カード と入力します。
ここでは〈コマンド設定〉3行目で「図書貸出」の「貸出」項目値を×にしてしまったのでふたたび○に戻します。該当カードがあるときは「貸出」項目の項目値×は無用なのでふたたび○に戻します。
〈コマンド設定〉7行目
〈カテゴリ〉から〈フォーム〉を選び〈コマンド一覧〉から〈カレントフォームの指定〉
〈データベース〉は「生徒名簿」を選び〈フォーム〉は(一覧表極小)です。
該当カードがあるのでさっそく処理中のファイルを「生徒名簿」に移動して生徒データの取り込み処理に入ります。
そのままカレントファイルを切り替えるだけだと画面のかなりの範囲を(一覧表)が占めてしまいますので不要な表示で画面を隠してしまいます。ファイルの画面表示は避けられないので、できるだけ小さなフォームを表示するようにします。このフォームを作るための説明はどこかでしていましたか忘れました。P.25で「図書原簿」の(一覧表極小)フォームの作り方を説明していますのでこれを参照して作成してください。

〈コマンド設定〉8行目
〈カテゴリ〉から〈検索〉を選び〈コマンド一覧〉から〈ダイアログ検索〉
〈手順書〉として「○印」を選びます。
「貸出」ボタンを押す前に、貸出のあった生徒の「生徒名簿」カードの「貸出」項目に○印を入れましたので、このカードを検索します。○印を入れなかった場合は次のコマンド行でその処理をします。
〈コマンド設定〉9行目
〈カテゴリ〉から〈条件分岐〉を選び〈コマンド一覧〉からも〈条件分岐〉
〈検索件数〉のラジオボタンがオンになっていることを確認して
▼(リストボタン)から  を選び、値は  です。
〈成立時のジャンプ先〉として 該当終了 と入力します。
「貸出」ボタンを押す前に「生徒名簿」の「貸出」項目に○印をつけなかった場合は何もしないで「該当終了」のラベル行にジャンプし終了処理をします。検索カードがあった場合(○印をつけた場合)はそのまま次行に進みます。
〈コマンド設定〉10行目
〈カテゴリ〉から〈ファイル〉を選び〈コマンド一覧〉から〈書き出しデータベース追加〉
〈手順書〉として「図書貸出へ生徒データ」を選びます。
○印の付いたカードから生徒データを「図書貸出」の表組欄に書き出します。
〈コマンド設定〉11行目
〈カテゴリ〉から〈一括〉を選び〈コマンド一覧〉から〈一括訂正〉
〈手順書〉として「貸出臨時書籍コードクリア」を選びます。
○印の付いた「生徒名簿」カードの「貸出」項目の○印と「臨時書籍コード」項目の「図書貸出」への書き込み用書籍コードを削除します。これを残しておくと次回の貸出ボタンの実行に差し支えますから。
〈コマンド設定〉12行目
〈カテゴリ〉から〈フォーム〉を選び〈コマンド一覧〉から〈フォームを閉じる〉を選びます。
画面のどこかに小さく開かれていた「生徒名簿」ファイルの(一覧表極小)フォームを閉じます。
〈ラベル〉名として 該当終了 と入力します。
どこに表示されていたか気がつかないくらいで処理の間、瞬間現れているだけのフォームですが。
〈コマンド設定〉13行目
〈カテゴリ〉から〈ジャンプ〉を選び〈コマンド一覧〉からも〈ジャンプ〉を選びます。
ジャンプ先の〈ラベル〉名として 終了 を入力します。
このジャンプコマンドがないと新規図書カードの処理コマンドに入ってしまいますね。
〈コマンド設定〉14行目
〈カテゴリ〉から〈フォーム〉を選び〈コマンド一覧〉から〈カレントフォームの指定〉を選びます。
〈データベース〉は「生徒名簿」を選び、〈フォーム〉として(一覧表極小)を選びます。
○印のついた「生徒名簿」カードから生徒データを「図書貸出」ファイルの表組行に入力する準備として処理中のファイルを切り替えます。(一覧表極小)フォームを選ぶわけはコマンド設定7行目の場合と同じ理由からです。
〈コマンド設定〉15行目
〈カテゴリ〉から〈検索〉を選び〈コマンド一覧〉から〈ダイアログ検索〉を選びます。
〈手順書〉として「○印」を選びます。
コマンド設定8行目の場合と同じです。「貸出」ボタンを押す前に、貸出のあった生徒の「生徒名簿」カードの「貸出」項目に○印を入れましたので、このカードを検索します。○印を入れなかった場合は次のコマンド行でその処理をします。
〈コマンド設定〉16行目
〈カテゴリ〉から〈条件分岐〉を選び〈コマンド一覧〉からも〈条件分岐〉を選びます。
〈検索件数〉のラジオボタンがオンになっていることを確認して
▼(リストボタン)から  を選び、値は  です。
〈成立時のジャンプ先〉として 新規終了 と入力します。
コマンド行9行目と同じです。「貸出」ボタンを押す前に「生徒名簿」の「貸出」項目に○印をつけなかった場合は何もしないで「新規終了」のラベル行にジャンプし終了処理をします。検索カードがあった場合(○印をつけた場合)はそのまま次行に進みます。
〈コマンド設定〉17行目
〈カテゴリ〉から〈一括〉を選び〈コマンド一覧〉から〈一括番号記入〉を選びます。
〈手順書〉として「表NO連番」を選びます。
「貸出」ボタンをクリックして生徒データを表組項目に入力する際、1行目に入らずに2行目に入るという問題がありました。ここで記入する生徒データに強制的に1から番号を振ります。生徒データは複数入力できるため順番をつけてやる必要があります。この番号を参照して表組の1行目から順に入力されます。
〈コマンド設定〉18行目
〈カテゴリ〉から〈ファイル〉を選び〈コマンド一覧〉から〈書き出しデータベース追加〉を選びます。
〈手順書〉として「図書貸出へ生徒データ新規」を選びます。
○印の付いたカードから生徒データを「図書貸出」の表組欄に書き出します。コマンド行10行目と違うところは〈手順書〉として「図書貸出へ生徒データ新規」を使うことです。この手順書ではまず第一に「書籍コード」によって「図書貸出」ファイルの書き込むカードを選びますが、表組欄の中で「表NO」を参照していることです。これにより書き込まれるデータは表組欄の1行目から書き込まれます。ここで新規カード書き込みに際して表組欄一行目が空白行になるのを防いでいます。
〈コマンド設定〉19行目
〈カテゴリ〉から〈一括〉を選び〈コマンド一覧〉から〈一括訂正〉を選びます。
〈手順書〉として「貸出臨時書籍コードクリア」を選びます。
コマンド行11行目と同様、○印の付いた「生徒名簿」カードの「貸出」項目の○印と「臨時書籍コード」項目の「図書貸出」への書き込み用書籍コードを削除します。これを残しておくと次回の貸出ボタンの実行に差し支えますから。
〈コマンド設定〉20行目
〈カテゴリ〉から〈フォーム〉を選び〈コマンド一覧〉から〈フォームを閉じる〉を選びます。
画面のどこかに小さく開かれていた「生徒名簿」ファイルの(一覧表極小)フォームを閉じます。
〈ラベル〉名として 新規終了 と入力します。
コマンド行12行目と同様です。「生徒名簿」(一覧表極小)フォームを閉じます。
〈コマンド設定〉21行目
〈カテゴリ〉から〈フォーム〉を選び〈コマンド一覧〉から〈カレントフォームの指定〉を選びます。
〈データベース〉は「図書貸出」を〈フォーム〉は(カード)を選びます。
処理中のファイルを再び「図書貸出」に戻します。
〈コマンド設定〉22行目
〈カテゴリ〉から〈検索〉を選び〈コマンド一覧〉から〈ダイアログ検索〉を選びます。
〈手順書〉として「×カード」を選びます。
コマンド行4行目で「図書貸出」表組欄にデータがあるかないかを検索したことによって「図書貸出」の該当カードが表示されなくなっていました。(データがあった場合は検索結果が同一カードなので表示は変わりませんが、データがなかった場合は検索結果がゼロとなりどのカードも表示されなくなります)そこでコマンド行3行目で×印をつけておいたカード(該当カード)を呼び出します。
〈コマンド設定〉23行目
〈カテゴリ〉から〈一括〉を選び〈コマンド一覧〉から〈一括訂正〉を選びます。
〈手順書〉から「貸出○」を選びます。
コマンド設定22行目で「貸出」項目の役目が終わりましたので、通常の項目値○に戻してやります。
〈コマンド設定〉24行目
〈カテゴリ〉から〈フォーム〉を選び〈コマンド一覧〉から〈カレントフォームの指定〉を選びます。
〈データベース〉は「図書貸出」で〈フォーム〉は(カード)です。
〈ラベル〉名として 終了 と入力します。
もともとカレントフォームは「図書貸出」(カード)フォームなので、このコマンド行は本来無くてもいいのですが、コマンド行13行目の「ジャンプ」先としてラベルを指定する必要から存在理由があります。
〈コマンド設定〉25行目 ‥あとで追加しました。
貸出の生徒データを追加した場合「書出ID」が入力されないという不都合が起こります。
いったんファイルを閉じて開くとちゃんと入っているのですが。このまま終了すると「書出ID」が空白になってしまいます。
この問題を解決するためにコマンドを一行追加します。

※ここでは「書出ID」の入力状態を調べるために臨時的に「書出ID」項目を挿入しています。実際使用する場合は「書出ID」項目を行削除します。
〈カテゴリ〉から〈一括〉を選び、〈コマンド一覧〉から〈一括再計算〉を選びます。
〈OK〉ボタンをクリックして終了します。