過去の桐井戸端BBS (桐ver.9)
25540 フォームのコマンドボタンから別のフォームを表示してもう一度コマンドボタンで元のフォームに戻りたい 悩み太郎 2004/03/21-16:27
連続で申し訳ありませんが別件で教えていただきたいことがあります(桐VER9)。

以前、生徒名簿から生徒のクラスごとの人数をフォームで表わしたいとの質問をして大変助かりました。

生徒名簿一覧1.wrmにコマンドボタンを設け、一括処理を実行するように設定してあります。
転置集計→クラスごとの人数を書き出し→別の表で読み込み→フォーム(生徒人数.wfm)で表示
ここまではできました。

その生徒人数.wfmに"戻る"ボタンを設けてそれを押すと生徒名簿の生徒名簿一覧.wfmへ戻って欲しいのですが、できません。
閉じるの×ボタンを押すと一括処理で閉じていないのか元表の生徒名簿.tblが出ています。
戻るのコマンドボタンには
機能名    パラメータリスト
開く     "Z:\n在校生\生徒名簿 一覧1.wfm"
閉じる

と、設定しました。
生徒人数.wfmだけを開いて処理すれば動く(生徒一覧1.wfmに戻る)のですが、
生徒名簿.wfmの一括処理から生徒人数.wfmを出すとコマンドボタンも無効を表わす白抜き文字です。

一括処理の内容は

変数宣言 整数{&履歴変数}
使用フォーム
条件 (.NOT #行集計状態 .AND .NOT #絞り込み状態 .AND #整列状態) 整列解除
絞り込み [在学退学休学]{"在学"},文字比較方法=自動
転置集計条件登録 条件名="",{[在学退学休学],[クラス]},[性別],[クラス],集計種別=
件数,丸め=しない,見出し項目値並べ替え=しない,転置項目名並べ替え=降順
転置集計 条件名="",表番号=2
書き出し条件登録 表,条件名="","生徒人数書き出し.tbl",ファイル名変更=しない,{[在学退学休学],[クラス],[男],[女],[件数]}
書き出し 表,条件名=""
表 "生徒人数読み込み表.TBL",表番号=4
行削除  *,\
終了状態 = &終了
条件 (.NOT #行集計状態 .AND .NOT #絞り込み状態 .AND #整列状態) 整列解除
読み込み条件登録 表,条件名="","生徒人数書き出し.tbl",ファイル名変更=しない,{[在学退学休学][在学退学休学],[クラス][クラス],[男][男],[女][女],[件数][件数]},編集表=する
読み込み 表,条件名=""
終了 表 2,4
フォーム呼び出し 生徒人数

いつもながら上手く説明できないのですが、わからない部分は再度聞いて下さい。
どうぞ宜しくお願い致します。


25541 Re:元のフォームに戻りたい 悲しげ 2004/03/21-17:15
記事番号25540へのコメント
どもっ、悩みさん
一括処理(たぶんcmd)を経由させると、処理を複雑にしてしまうだけなので、
私ならcmdを使わずに、"生徒名簿一覧1.wfm" とやらから、直接 "生徒人数.wfm"
とやらを「フォーム呼び出し」させると思います。

"生徒名簿一覧1.wfm"の、例えばコマンド牡丹(仮称「b生徒人数表示」)の
記述を次のようにする。
 機能     同パラ
手続き実行  生徒人数表示

"生徒名簿一覧1.wfm" のイベントファイルとしての "生徒名簿一覧1.kev" の記述。
(各フォームの編集対象表名や読み込み・書き出し表の相関関係が、いまいち不明なのでその辺りテキトーですが)

手続き定義開始 生徒人数表示()
 編集表 "生徒名簿一覧wfmの編集対象表である某.tbl"
 絞り込み解除
 絞り込み [在学退学休学]{"在学"},文字比較方法=自動
 転置集計条件登録 条件名="転置云々",{[在学退学休学],[クラス]},・・・・・
 転置集計 条件名="転置云々"
 書き出し条件登録 表,条件名="書出云々","生徒人数書き出し.tbl",・・・・・・
 書き出し 表,条件名="書出云々"
 /*↑"生徒人数書き出し.tbl"とやらに書き出したと仮定*/
 終了 表 編集対象表 /*転置集計表を閉じたつもり*/
 フォーム呼び出し "生徒人数.wfm"
 編集表 "生徒名簿一覧wfmの編集対象表である某.tbl"
 絞り込み解除
手続き定義終了

次、
"生徒人数.wfm"用のイベントファイルとしての"生徒人数.kev"の記述。

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 グループ選択解除 /*もしその必要があれば*/
 行削除 *,圧縮
 読み込み条件登録 表,条件名="読込云々","生徒人数書き出し.tbl"・・・・
 読み込み 表,条件名="読込云々"
 /*↑"生徒人数書き出し.tbl"とやらから読み込むと仮定*/
 グループ選択   /*もしその必要があれば*/
手続き定義終了

これで、"生徒名簿一覧1.wfm" のボタンで、"生徒人数.wfm" が呼び出され、
且つ呼び出されたフォームを閉じれば、呼び出し元のフォームに戻ることができるはずです。

25551 Re:元のフォームに戻りたい 悩み太郎 2004/03/22-13:54
記事番号25541へのコメント
悲しげ様

ご指導ありがとうございます。
イベントが理解できず、イベント嫌いになっていますが、このやり方で表示時間も短縮されて表示できました
(ただ人に作ってもらったのをそのまま移しているだけですね〜悲しい)。

が!!

表示はできるのですが”KU1200:共有状態では実行できません”
詳細  行削除 圧縮
ファイル名 生徒人数.kev

という注意が出てきてしまいます。
何がいけないのでしょうか?
ネットワーク接続なのでそれが関係していますか?

25553 Re:元のフォームに戻りたい 悲しげ 2004/03/22-14:03
記事番号25551へのコメント
どもっ、悩みさん

>”KU1200:共有状態では実行できません”
>詳細  行削除 圧縮
>ファイル名 生徒人数.kev

共有とかネットワークのことは私には判りませんので
他の方に振ります。(^^;)

25558 Re:元のフォームに戻りたい うにん 2004/03/22-15:22
記事番号25553へのコメント

>>”KU1200:共有状態では実行できません”
>>詳細  行削除 圧縮

圧縮は専有でないと実行できないので、最初のように
行削除  *,\
終了状態 = &終了
の方がいいですね。(2行にする理由はなさそうですが)
削除できなかった場合のエラー処理もあった方がいいですが。

25561 Re:元のフォームに戻りたい 悲しげ 2004/03/22-19:21
記事番号25558へのコメント
 圧縮(表整理)しないと表がどんどん大きくなってしまうので、小さな
親切のつもりで書いてしまったのですが、大きなお世話だったかも。(^^;)
 では、こんな感じにしたらどうかな?

 書き出し 表,条件名="書出云々"
 /*↑"生徒人数書き出し.tbl"とやらに書き出したと仮定*/
 終了 表 編集対象表 /*転置集計表を閉じたつもり*/
 *TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
 *↓「行削除 *,圧縮」と同じことを先にやってしまう
 ファイル複写 "生徒人数wfmの編集対象表名.tbl","作業$$$.tbl"
 表 "作業$$$.tbl"
 書き出し 枠組み,"生徒人数wfmの編集対象表名.tbl"
 終了 表 編集対象表
 ファイル削除 "作業$$$.tbl"
 *LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
 フォーム呼び出し "生徒人数.wfm"

25569 Re:元のフォームに戻りたい 悩み太郎 2004/03/23-18:47
記事番号25561へのコメント
うにんさん、悲しげさん、やっぱり動かずちょっと手間取っているのでもう少し待って下さい。
自分でもいじってみて再度ご報告&ご質問致します。

戻る