過去の桐井戸端BBS (桐ver.9) |
25041 | 別のフォームで検索して、本フォームに入力したい | しお | 2004/02/24-12:29 |
会員が、沢山ある教室(講座)のなからから選んで受講するものを管理したくて 作成していますが、いきづまってしまいました。 フォームA、B、Cがあり、それぞれにA.tbl B.tbl C.tblがあります。 項目は概略で フォームAには[教室ID][教室名][定員] フォームBには[教室ID][会員ID] フォームCには[会員ID」[氏名] があります。 フォームAの教室を選択し、受講生入力のボタンを押すと、フォームBに飛ぶところまでは、 以前ご教授頂いた方法でやっていますが、フォームBで、受講生を入力したいのですが、 それぞれのレコードごと検索ボタンを付け、フォームCのような検索画面から会員を検索し、 選択した会員を登録ボタンでフォームBに入力したいのです。 また、定員を超えた場合に注意を促す表示を出したいのですが、これもいまいち解りません。 さらに、フォームAに現在の受講生の人数を表示させたいのですが、これはさっぱりわかりません。 いつも質問ばかりで恐縮ですが、どなたかご教授頂けないでしょうか? よろしくお願いします。 | |||
25060 | Re:別のフォームで検索して、本フォームに入力したい | Mao | 2004/02/24-18:03 |
記事番号25041へのコメント 色々方法はあると思いますが、私の方法 >フォームCのような検索画面から会員を検索し、選択した会員を登録ボタンで >フォファームBに入力したいのです。 【会員IDの取得】 フォームB、会員IDオブジェクトに入力前イベントを使って (&idの変数宣言は予めしているものとします。) 手続き定義開始 t会員ID::入力前(参照 文字列 &編集文字列) フォーム呼出し "フォームC.WFM" &編集文字列= #str(&id) 手続き定義終了 フォームC 検索を実行して該当の会員IDにジャンプします。 キーダウンイベントでEnterキーで&idに該当会員IDを格納 手続き定義開始 フォーム::キーダウン(長整数 &仮想キーコード,長整数 &スキャンコード, 長整数 &フラグ,参照 長整数 &処理中止) if (&仮想キーコード=13) &id=[会員ID] メソッド呼び出し @cb.実行( )←このコマンドボタンでフォームCを閉じます。 end 手続き定義終了 以上で、フォームB会員IDに検索した会員IDが書き込まれます。 >さらに、フォームAに現在の受講生の人数を表示させたいのですが、これはさっぱり 【フォームBに表示】 A.tblをメインB.tblをサブにしてメイン&サブフォームを作り、サブフォームに件数を表示させてはいかがでしょうか? | |||
25064 | Re:別のフォームで検索して、本フォームに入力したい | アックン(=^・^=) | 2004/02/24-19:24 |
記事番号25041へのコメント しおさん、こんにちは。 見本フォームをアップしました。A.wfmを起動してください。 「選択した会員を登録ボタンでファームBに入力したい」ニーズに対応させています。 なお、前回のQ&Aの続きのようですが、前回使っていた"区分"、"明細"等の言葉が 今回はどこでどのように使われているかが不明のため、それらは使わないようにしています。 イベントの記述の一部を、言葉を適当に変更しました。 >また、定員を超えた場合に注意を促す表示を出したいのですが、これもいまいち解 Bフォームに表示したいのですね? 定員を越える前に知らせる方がいいと思いますが、ぼくはまだ考えていません。(^^; >さらに、フォームAに現在の受講生の人数を表示させたいのですが、これはさっぱり 同じく、まだ考えていません。(^^; | |||
25081 | Re:別のフォームで検索して、本フォームに入力したい | しお | 2004/02/25-13:19 |
記事番号25064へのコメント Maoさん、アックン(=^・^=)さんありがとうございます。 お陰様で、フォームA→B←C→Bの入力が出来るようになりました。 ご教授ありがとうございます。 その後、定員オーバーに関する処理を自分なりに考えてみました。 一つはフォームBのフッタ部分に、 #条件選択(#件数([会員番号])≦#数値(#表引き([教室ID],=,"教室.tbl",[教室ID],[定員])),#件数([会員番号]), #件数([会員番号])+1>#数値(#表引き([教室ID],=,"教室.tbl",[教室ID],[定員])),"定員オーバーです") 数式を入れてみました(みっともない数式ですみません^^;) これで、数値を目で見ながら確認は出来るようになりました。 もう一つは、行挿入処理後、現在の件数を調べ、定員と比べて多い場合、警告をだすというのを考えました 手続き定義開始 フォーム::行挿入終了(長整数 &明細番号,長整数 &モード) 代入 &現在受講 = #件数([会員番号]) 代入 &定員 = #表引き([教室ID],=,"T4教室.tbl",[教室ID],[定員]) if &現在受講<&定員 (ここには、定員以下ならOKだ!といいった処理をしたいのです) else メッセージボックス 定員をオーバーしています ,定員をオーバーしています , アイコン=!, ボタン指定=1 end 手続き定義終了 もちろん、こんな処理が動くわけなく(^^; 悩んでおります。 お知恵をお借りできませんか? | |||
25086 | Re:別のフォームで検索して、本フォームに入力したい | Mao | 2004/02/25-16:25 |
記事番号25081へのコメント 教室.tbl 受講生.tbl だとして 教室.tblをメインフォーム(イベントファイル「教室.kev」) 受講生.tblをサブフォーム(イベントファイル「受講.kev」) からなるメイン&サブフォームを作成したとします。 ○メインフォームのオブジェクト名 教室ID 教室名 定員 ○サブフォームのオブジェクト名 フォーム明細部 会員ID 氏名 申込年月日 フォームフッタ部 申込件数(ソース:#件数([会員ID]) として ************************** 受講.kev ************************** 名札 メイン 変数宣言 長整数,{&id,&kazu,&mkazu} * 手続き定義開始 会員ID::入力前(参照 文字列 &編集文字列) メソッド呼び出し ハンドル = &hwindow ,@定員 .ソース値取得( &kazu ,0 ) メソッド呼び出し @申込件数.ソース値取得( &mkazu ,0 ) if (&kazu=<&mkazu) 確認 "定員を超えました" end 手続き定義終了 *************************** これでは、ダメでしょうか? 確認後、行挿入等を中止したかったのですが、そこまでは出来ませんでした。 しおさんは、 フォームの行挿入終了イベントで記述していますが、定員オーバーしたら、 後は入力しないのでしょうから入力前イベントにしてみました。 | |||
25130 | Re:別のフォームで検索して、本フォームに入力したい | しお | 2004/02/26-15:29 |
記事番号25086へのコメント Maoさんありがとうございます。 無事できました。 お陰様で定員を超えようとすると警告が出るようになり、とても感謝です^^ 今回の最後の問題なのですが、フォームA(教室の一覧表)に定員と現在の受講生数を表示させたいのです、 以前メインとサブフォームとのご助言を頂きましたが、できれば一覧表示で確認したのです。 そこで考えてみたのですが、 受講生の入力が終わったあと、教室ごとに集計して、教室の一覧に併合すればできるかなって思いましたが、 毎回、ソート、集計、併合という処理が起こってしまって重くなりそうです。 なにかいいアイデアはないでしょうか? | |||
25132 | Re:別のフォームで検索して、本フォームに入力したい | Mao | 2004/02/26-17:05 |
記事番号25130へのコメント 集計して併合する処理にそんなに時間がかかるとは思えませんが? それと、 【書き込みに際してのお願いと便利な使い方】に記載しているとおり **ご質問は1回の投稿につき1つ** にした方がよろしいかと思いますが。 | |||
25136 | Re:別のフォームで検索して、本フォームに入力したい | Mao | 2004/02/26-18:10 |
記事番号25130へのコメント どの順番でフォームを開いているか判断出来ませんでしたので、以下一例として書きます。 教室.tbl(フォーム:教室.wfm(一覧表形式) イベントファイル:教室.kev) 受講生.tbl(フォーム:受講.wfm(教室IDをグループとする伝票形式) イベントファイル:受講.kev) ○フォームの開き方 ◎教室.wfm を開く ◎申込を入力したい教室名等にフォーカスを移す ◎受講.wfmを開くコマンドボタンを押下 の順として ******************************** 教室.kev ******************************** 変数宣言 長整数,{&教室ID,&申込数} 手続き定義開始 受講開コマンドボタン::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ, 参照 長整数 &処理中止) &教室ID=[教室ID] フォーム呼出し ”受講.WFM” *** 受講.wfmを閉じて帰って来たときに受講申込数を書換 メソッド呼び出し @フォーム.更新モード設定( 2 ) ←教室.wfmを訂正モードにしてみました? 項目値代入 [受講申込数]=&kazu メソッド呼び出し @フォーム.更新モード設定( 0 ) ←上で訂正モードにしたので表示モードにしました? 手続き定義終了 ******************************** 受講.kev ******************************** 名札 メイン * 手続き定義開始 フォーム::フォーム開始(長整数 &表番号) グループ検索 {[教室ID]=&教室ID},終了状態=&flg 条件 (&flg=0) グループ追加 {[教室ID]=&教室ID } 手続き定義終了 手続き定義開始 フォーム::フォーム終了() *** 受講.wfmフッタ部の件数を表示するオブジェクトの値を変数「&申込数」に代入 メソッド呼び出し @件数.グループソース値取得( &申込数, 0 ) 手続き定義終了 ******************************** 他のイベントは、省略しました。 以上参考までに | |||
25137 | Re:別のフォームで検索して、本フォームに入力したい | Mao | 2004/02/26-18:13 |
記事番号25136へのコメント 変数名間違ってました。 >項目値代入 [受講申込数]=&kazu 項目値代入 [受講申込数]=&申込数 が正解ですダス。 | |||
25138 | Re:別のフォームで検索して、本フォームに入力したい | 悲しげ | 2004/02/26-19:06 |
記事番号25136へのコメント Maoさん wrote >メソッド呼び出し @フォーム.更新モード設定( 2 ) ←教室.wfmを訂正モードにしてみました? >項目値代入 [受講申込数]=&kazu >メソッド呼び出し @フォーム.更新モード設定( 0 ) ←上で訂正モードにしたので表示モードにしました? この部分は、元々は表示モードのようですから、 行訂正 [受講申込数]=&なんとか のようにすれば1行で済みます(表示モードのままで)。 | |||
25164 | Re:別のフォームで検索して、本フォームに入力したい | Mao | 2004/02/27-08:44 |
記事番号25138へのコメント >>メソッド呼び出し @フォーム.更新モード設定( 2 ) ←教室.wfmを訂正モードにしてみました? >>項目値代入 [受講申込数]=&kazu >>メソッド呼び出し @フォーム.更新モード設定( 0 ) ←上で訂正モードにしたので表示モードにしました? > >この部分は、元々は表示モードのようですから、 > > 行訂正 [受講申込数]=&なんとか > >のようにすれば1行で済みます(表示モードのままで)。 > ナイスなフォロー有難うございます。 何か変だなと思っていました。 なんせ、基本がないもので、その時の思いつきでいつも作成しています。 「動けばいいや」主義でやってます。 なもんで、同じようなシステム、昨日と今日作るのでは、 イベント等の書き方が全然違ってしまうこともタビタビ。 また、よろしくお願いします。 | |||
25203 | Re:別のフォームで検索して、本フォームに入力したい | しお | 2004/03/01-17:09 |
記事番号25132へのコメント 申し訳ありません。 ついいくつも質問してしまいました。以後注意致します。 | |||
25204 | ありがとうございました。 | しお | 2004/03/01-17:12 |
記事番号25164へのコメント イベント処理の理解がいまいちのため、 全てを理解出来ないのですが、お陰様で出来ました。 まだまだ、勉強不足ですので、今後もよろしくお願いします。 |