過去の桐井戸端BBS (桐ver.8)
6682 クリックすると×を入力したり、はずしたりしたい ととろん 2000/07/03-16:17
会議室の空き状況を表す表を作りたいと思っているのですが、どうしても思うようにできないので、
どなたか教えてください。

縦に日付、横に部屋番号があり、使用したい場所でクリックすると、
×印が入力されるようにしたいと思います。
また、×印が入力されている場所でクリックした場合は、
×印が消されるようなフォームを作りたいと思うのですが...

どうしたらよいかとても悩んでいます。よろしくお願いします。

6683 Re:フォームでの×の入力のしかた ケント 2000/07/03-17:35
記事番号6682へのコメント
ととろんさん こんにちは

テーブル名等がはっきりしていないので勝手に名前を付けますが、"room.tbl"の
項目[使用状況](文字列)をソースにするトグルボタンをフォームに配置します。
そのトグルボタンの「オブジェクト属性」「トグルボタンタブ」「ボタンの種類」 でチェックボックスにします。
それから、同じトグルボタンタブ内の「オンの値」を"×"にし、「オフの値」は未定義のままにします。
フォーム上に[使用状況]テキストボックスを配置するとしたら、
「表示タブ」で"キー操作禁止"にしたほうがいいかな....。

フォームでは表示がチェックボックスのオンオフですが、
"room.tbl"の[使用状況]には"×"で入力されていると思います。

イベントを使えばトグルボタンなど使わなくてもできる方法が有ると思いますが、
そっち方面は不得意なので聞かないで下さい。
6684 Re:フォームでの×の入力のしかた 悲しげ 2000/07/03-19:18
記事番号6682へのコメント
どもっ、ととろんさん、イベントの1例です。

 日付  部屋1 部屋2 部屋3 ・・・・・
-------------------------------------------
2000/7/3  ×       ×
2000/7/4      ×       ×
  ・・・・・・・・・・

のような表と伝票wfmがあるとします。
幾つかやり方はあるでしょうけど、マウス左クリックイベントで「行訂正」を使う方法を書いてみます。
フォームの各項目値オブジェクトの「左クリック」イベントにチェックを入れます。
その上でダブルクリックすると(予め命名しておいた)kevファイルが開かれますから、
そこに次のように記述します。

手続き定義開始 t部屋1::マウス左クリック(長整数 &マウス位置[2],長整数 ・・・・
 メソッド呼び出し @フォーム.更新モード設定(0)
 行訂正 終了状態=&実行リターン,[部屋1]=#cond([部屋1]="×","",1,"×")
手続き定義終了

手続き定義開始 t部屋2::マウス左クリック(長整数 &マウス位置[2],長整数 ・・・・
 メソッド呼び出し @フォーム.更新モード設定(0)
 行訂正 終了状態=&実行リターン,[部屋2]=#cond([部屋2]="×","",1,"×")
手続き定義終了

手続き定義開始 t部屋3::マウス左クリック(長整数 &マウス位置[2],長整数 ・・・・
 メソッド呼び出し @フォーム.更新モード設定(0)
 行訂正 終了状態=&実行リターン,[部屋3]=#cond([部屋3]="×","",1,"×")
手続き定義終了

・・・・・・・・・・

補足。
「t部屋1」等は当該オブジェクト名でして、「t」はテキストオブジェクトであることを
意味する接頭辞(的)です。
更新モード設定メソッドを呼び出しているのは、マウスクリックで訂正モードに入ってしまうのを避けるために、
敢えて表示モードに戻しています。
フォーム定義において編集表の許可作業で行訂正を許可しない方法もありえますが、
そうすると日付等の訂正が出来なくなって困るかと思い、このようにしてみました。
行訂正の条件選択式は、項目値が"×"であれば未定義値に、未定義であれば
"×"にさせているものです。
類似の手続き定義を部屋数分くりかえし設定します。このような類似の処理は
本来は「ファミリー」の機能を使うのがお奨めなんではありますが、
「行訂正」を使う場合、固有の項目名を簡単には指定できなかったので、
今回は類似記述の併記を採用してみました。
6689 会議室の予約表(基本設計の考え方) 佐田 守弘 2000/07/03-23:22
記事番号6682へのコメント
ととろんさん
>縦に日付、横に部屋番号があり、使用したい場所でクリックすると、
>×印が入力されるようにしたいと思います。
>また、×印が入力されている場所でクリックした場合は、
>×印が消されるようなフォームを作りたいと思うのですが...

との事ですが、#6683でケントさんがトグルボタンを使う方法を、
また#6684では悲しげさんがイベントハンドラで項目値を訂正する方法をコメントされております。
質問の題意に対する答としては、御両名の書かれた通りなのですが、
「会議室の空き状況を表す表」つまり会議室の予約表を作成するのであるとしたら、
質問されている方法では課題が残ると思いますので、この部分について補足させて頂きます。

質問では「会議室の空き状況を表す表」と書かれておりますが、社内の会議室予約であるか、
レンタル会議室の予約であるかによって状況が異なります。

■社内の会議室の予約表の場合
まずは社内の会議室の場合です。
●時間帯別の予約
質問では日単位で予約する様ですが、社内の会議室の場合、1日中同じ人が会議する事はあり得ないので、
時間帯別の予約が必要になるでしょう。
時間帯は少なくとも1時間単位、できれば30粉ないし15分単位の時間帯で予約を入れる必要が
あると思います。
従って、予約表のtblは、[日][室名][時間帯1]・・・[時間帯n]の様な形で持つ必要があります。
これに合わせてフォームは、日付でグループ化し、縦に室名、横に時間帯をとった形のフォームになるでしょう。
●予約者名の記録と予約者以外の解除の禁止
誰が予約したのか分からない予約表は、予約していないのと同じです。
会議室の予約表は、予約者名が表示される必要があります。
また、予約の解除は、予約者に限る必要もあります。
このためには時間帯別の予約の項目値に、単に「×」を入力するのではなく、
予約者名の情報を入力する必要があります。
これは社員番号、ないしログインユーザー名などを利用できます。
そして、予約済みの欄のクリックで解除する処理を行う場合には、予約している情報と
現在のユーザーの情報が一致したら、予約を解除し、一致しない場合には「○○さんの予約です。」
といったエラー表示が必要になります。

■レンタル会議室や宿泊予約の場合
このケースではお金が絡む話ですから、利用者の情報と予約登録処理や予約解除処理を
行った担当者の名前を残す必要があります。
●時間帯
レンタル会議室の場合には、午前、午後、夕方といった大きな時間帯別になるでしょう。
また、宿泊予約の場合には時間帯は不用になります。
●予約表
予約表は社内の会議室の予約と違い、利用者の情報や予約処理の情報が主体の表になります。
・日付と室名、時間帯
・予約者の情報(氏名や電話などの連絡先、その他)
・予約登録と解除を行った担当者名、登録処理を行った日付時刻など
そして質問の題意にあるようなフォームで、予約状況を一覧表示します。このフォームで
該当する日付と時間帯や室名をクリックしたら、予約情報の詳細を表示するフォームを開き、
ここで予約の登録や変更、あるいは抹消などを行う様にします。
単に予約の「×」を記入したり消すのではだめです。
更に言えば、予約表のマスタファイルに直接書き込みをするのではなく、まず登録や
キャンセル処理を記録するジャーナルファイルに記録し、ジャーナルファイルからマスタファイルに
書き込みや消し込みを行うといった方法が必要になります。
そしてそのジャーナルファイルは、該当する日付が過ぎるまで保存しておきます。
この様な処理をしませんと、「私はいつ、誰さんに予約を頼んだはずなのに、何で予約が消えているんだ。」
といったクレームに対処できません。

佐田守弘(KS-00119)

6693 イベントが難しいです。 ととろん 2000/07/04-12:47
記事番号6684へのコメント
ケントさん、悲しげさん、そして佐田さん、どうもありがとうございます。
私の求めていた方法は悲しげさん方式ですので、イベントを使ってやりたいと思います。
ですが、イベントを使うのは今回が初めてで、あまりよく分かりません。

悲しげさんに教えていただいたイベントを記述してやってみたのですが...

 メソッド呼び出し @フォーム.更新モード設定(0)   のところがうまくいかないようです。

  @フォーム はフォーム名を記述するのでしょうか?

 「指定したオブジェクトは登録されていません」 のエラーが出てしまいます。

なにしろ初めてのことなのでさっぱり分かりません。初歩の初歩の質問で申し訳ありませんが教えてください。

6695 Re:イベントが難しいです。 悲しげ 2000/07/04-14:51
記事番号6693へのコメント
どもっ、ととろんさん

本質的な問題は佐田さんのおっしゃるとおりなんですが、ま、今回は練習と云うことで。(^^;)

> メソッド呼び出し @フォーム.更新モード設定(0)   のところがうまくいかないようです。
>
>  @フォーム はフォーム名を記述するのでしょうか?
>
> 「指定したオブジェクトは登録されていません」 のエラーが出てしまいます。

この掲示板では全角表示されていますが、「@フォーム」は正しくは半角です。
おそらくこの点でのエラーだと思います。
6717 Re:イベントが難しいです。 ととろん 2000/07/05-14:25
記事番号6695へのコメント
悲しげさん どうもありがとうございました。
うまくできたようです。
やっぱり イベントって難しいですね。
今後 いろいろ挑戦していきたいと思うので、またアドバイスよろしくお願いします。

戻る