過去の桐井戸端BBS (桐ver.9)
28152 別フォームで変数を取得、絞込、 訂正をしたい 手塚 修 2004/11/09-20:14
すみません。また教えてください。

入力済みデータを訂正する時の件です。

メインフォーム上に配置したコマンド釦(訂正)より行選択フォーム(伝票形式)を開き、訂正すべき行をクリックします。下記kevです。

手続き定義開始 コマンドボタン_選択::マウス左クリック(長整数----&処理中止)
   変数宣言 固有,日時{&日付}
   変数宣言 固有,文字列{&車両番号}
   *method @フォーム.更新モード設定(0)
    &日付=[日付],&車両番号=[車両番号]
     フォーム呼び出し 事故報告書
手続き定義終了

事故報告書(カード型)を絞り込んだ状態で開き、訂正したいのですが、
変数が受け渡されなく、項目が空白な状態のフォームが表示されてしまいます。
共通変数にしても同じ。受け渡しなしです。呼出されたフォームのkevは
概略、下記。

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
else if(&旗="事故報告書訂正")
    オブジェクト操作 @次入力.画面表示=0,@行削除.画面表示=1
    絞り込み [車両番号]=&車両番号  
    絞り込み [日付]=&日付
手続き定義終了

現在 表は同一。別ウインドウ。別なフォームにも利用したいので、メイン・サブフォームでの使用は考えていません。

よろしくお願いいたします。


28156 Re:別フォームで変数取得 絞込 訂正をしたい 佐田 守弘 2004/11/09-21:18
記事番号28152へのコメント
手塚 修さん
原因追及が結構面倒なエラーですので、断定的なことは言えませんが、気になる部分をいくつか述べます。

●受け渡す変数を宣言する場所
イベントハンドラの中で宣言するのではなく、メイン部で宣言してみて下さい。
固有変数で宣言しているので、多分問題ないとは思うのですが、イベントハンドラ内で宣言するのは、
イベントハンドラ内だけで有効にする自動変数だけに留めた方が何かと無難です。

●マウスクリックイベントのタイミング
マウスクリックは、ボタンを話した時のタイミングなので、多分この時点で処理対象行は目的の行に移動しているはずで、
多分問題ないとは思うのですが。
私はこの様な場合に、マウスイベントを使うのではなくて、Enterキーの入力をキーダウンイベントで調べて、類似の処理をしています。

●変数値の確認のために
フォーム呼び出しで呼び出したフォーム上で、変数管理を開き、変数値の確認を行ってみて下さい。
元のフォームと呼び出すフォームの空いている場所に、これらの変数値を表示する
テキストボックスを一時的に作っておけば、フォームを開いたままで変数値のチェックが行えるので便利です。
これは私がデバッグの手段としてよく行う方法です。

佐田守弘(KS-00119)
28158 Re:別フォームで変数取得 絞込 訂正をしたい 佐田 守弘 2004/11/09-23:34
記事番号28156へのコメント
手塚 修さん
前コメントを書いた様に、件数値がどうなっているかを確認することが先決なのですが、
それ以外に次の様な事も確認してみて下さい。

●コマンドボタンを使ってフォームを呼び出してみる。
マウスイベントでフォーム呼び出しをするのではなくて、マウスで行を選んだ後、
コマンドボタンの一般手続きの中で項目値を変数に代入して、フォーム呼び出しを行ってみて下さい。
この方法でうまく行けば、タイミングの問題で変数が引渡されていないと考えられますし、
同じ状況なら何か別の所に原因があるのではないかと考えられます。

●フォーム呼び出しではなくてフォームの選択を使ってみる
同じ表を一覧表形式とカード型のフォームで表示を切り替えたい様なので、
フォーム呼びだしをするのではなくて、フォームの切り替えを行う方法もためしてみて下さい。
フォームの切り替えは、コマンドボタンの機能名で行います。これを行うコマンドボタンをどこかに作っておき(非表示で良い)、
メソッド呼び出しで実行します。

複数のフォームで同じ表を表示すると、表が多重化状態になるので、そのあたりで
何か不都合が起きている様な気もします(質問文からは読めません)。

その様な事を避けるために、同じ表を多重化してフォーム呼び出しするのではなくて、
フォームそのものを別のフォームに切り替えた方が簡単な様にも思います。

●更に補足
#28121で書かれている手塚 修さんの質問に対して、私はイベントファイルを共用する
と思わぬ弊害が発生するとコメントしました。
私が経験したトラブルも、正にこの質問に書かれている様な変数値が引渡されないという現象でした。
同じ変数宣言コマンドが有るために、変数値がリセットされていた事が分ったのは、かなりの苦労をした後でした。

佐田守弘(KS-00119)
28161 Re:別フォームで変数取得 絞込 訂正をしたい アックン 2004/11/10-10:48
記事番号28152へのコメント
手塚 修さん、こんにちは。
表を多重化しないと、カード型フォームを開くときに、
エラーが出るはずなんですが・・・・。(?)

それと、フォーム呼び出しするときは、編集表=する にすればいいです。
というわけで、次のようにしてみたらどうなりますか。

>   変数宣言 固有,日時{&日付}
>   変数宣言 固有,文字列{&車両番号}
>   *method @フォーム.更新モード設定(0)
>    &日付=[日付],&車両番号=[車両番号]
 多重化
 フォーム呼び出し 事故報告書 ,編集表=する

アックン(=^・^=)
28162 Re:別フォームで変数取得 絞込 訂正をしたい うにん 2004/11/10-10:58
記事番号28152へのコメント

>手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
> else if(&旗="事故報告書訂正")

この変数をどこで宣言してるのかが問題ではないですか?

28163 多重化??? ONnoji 2004/11/10-11:47
記事番号28161へのコメント
アックンさん、こんにちは。

横レスで失礼します。

イベント命の私( ONnoji )は今まで気が付いていなかったのですが…
ホントに最近気が付いたのです。

フォームのオブジェクトの属性の、[編集対象表]タブで、
[許可作業]ボタンを実行して、[許可作業]ダイアログ出して、
[多重化]テックボックスをオンにすると、
すでに、フォームで指定した編集対象表が開いていても、
表を多重化するので、「表はすでに使用されています」で叱られないのです。

こういう使い方も可能なんですね。(>_<)

<追伸>

あくまでも私( ONnoji )場合ですが…

表を多重化して、それぞれ会話処理用のフォームでデータを編集すると、
どちらか一方または両方の表を会話訂正などの操作をすると表がロックされると思います。
そのためにデッドロックする可能性があるので、こういう使い方はしないようにしています。

私の場合、表( .tbl )の多重化は、
フォームの無駄なリドロウ(再描画)を軽減してパフォーマンス向上させる場合だけにしています。

28164 Re:多重化??? ONnoji 2004/11/10-11:53
記事番号28163へのコメント

>表を多重化して、それぞれ会話処理用のフォームでデータを編集すると、
>どちらか一方または両方の表を会話訂正などの操作をすると表がロックされると思
>います。
>そのためにデッドロックする可能性があるので、こういう使い方はしないようにし
>ています。

誤解のないように書き添えます。(^^ゞ

元のフォームの編集対象表( .tbl )を表示モードに遷移した後に、
多重化した表( .tbl )をモーダルフォームで編集する場合は問題無いですね。(^^v
28165 Re:多重化??? アックン 2004/11/10-12:25
記事番号28164へのコメント
ONnojiさん、こんにちは。
ありがとうございます。
カード型フォーム(事故処理.wfmだったか)の許可作業の多重化をONにしておけばいいんですね。
それで手塚さんのフォームが開いているわけがようやくわかりました。<(^^;だはは...

>元のフォームの編集対象表( .tbl )を表示モードに遷移した後に、
>多重化した表( .tbl )をモーダルフォームで編集する場合は問題無いですね。(^^v

はい。そういう使い方してます。

アックン(=^・^=)

28168 ありがとうございました 手塚 修 2004/11/10-18:14
記事番号28158へのコメント
>●更に補足
>私が経験したトラブルも、正にこの質問に書かれている様な変数値が引渡されない
>という現象でした。同じ変数宣言コマンドが有るために、変数値がリセットされて
>いた事が分ったのは、かなりの苦労をした後でした。

ようやくわかりました。同じ変数が2つのkevに宣言されていました。
たたぶんこの為に変数が受け渡されなかったみたいです。それぞれのkevに宣言されていた変数を全て書き出し、
重複していた変数を1つに統一した結果、
変数の受け渡しも行われ、訂正用のカード表示となりました。

>●コマンドボタンを使ってフォームを呼び出してみる。
>●フォーム呼び出しではなくてフォームの選択を使ってみる

具体的には理解できていませんが、そんな方法もあるのかな、今後の課題だなと思っています.

>多重化???の件
>フォームのオブジェクトの属性で[許可作業][多重化]の件
>多重化した表をモーダルフォームで編集するの件

上記はクリアーしていたみたいです。

>変数宣言をどこでしているかが問題なのではの件

取敢えずの対処としてメインメニューkevの先頭に、全ての変数をまとめて宣言し、
各kevの変数は削除しました。
どのkevで宣言すべきなのか?同じ変数を使う場合(使ってはいけない?)の対処法等が理解できていない現在、
やむを得ないのかなと思っています。

お世話になりました。
みなさん ありがとうございました。

28172 変数の重複宣言:厄除けの御護り 佐田 守弘 2004/11/11-00:06
記事番号28168へのコメント
手塚 修さん
今までに書かれているいくつかの質問を拝見しますに、どうやら手塚 修さんは、
かつて私が歩み、苦しんだ茨の道に既に足を踏み込んだ様ですね。

しかも、
 >別なフォームにも利用したいので、
と書かれているところから推測しますに、類似ではありますが別の新たなトラブルに
遭遇する事が予測されます。

●変数宣言の問題
 >取敢えずの対処としてメインメニューkevの先頭に、全ての変数をまとめて宣言
 >し、各kevの変数は削除しました。どのkevで宣言すべきなのか?同じ変数を使う
 >場合(使ってはいけない?)の対処法等が理解できていない現在、やむを得ないのかな
 >と思っています。
これはある意味では賢い、正統的な解決策であることは確かです。しかしながら、
桐のフォームは必ずしもメインメニューから開くとは限りません。

例えば私が自分のサイトにも掲載しております名刺管理も、名刺管理のメインメニューを作っておりますが、
日常的にはメインメニューから開くよりも、名刺の編集画面を直接開く事がほとんどです。

メインメニューのKEVで全ての変数を宣言する場合には、それぞれの編集画面を直接開いた場合に、
変数が未宣言のエラーになります。かと言って、両方のKEVで変数を宣言すれば、今回の様な問題を生じます。
KEV毎に別々の変数を使えば重複宣言は回避できますが、今回の質問にある様に、
変数を使ってフォーム間で値を引渡そうとすると、複数のフォームとKEVで同じ変数を使わざるを得ません。

変数の件以外にも、表引き表を開いておくとか、各種の設定をしたりなど、様々な課題があり、
それぞれ発生する問題毎にどの様に回避策を考えるかが課題になるだろうと思います。

●「変数の重複宣言」 厄除けのお札
今当たっている課題は変数の重複宣言回避の課題ですし、またこの課題が結構重要なので、
まずは変数の重複宣言の苦難を避ける「厄除けの御護り札」をお授けします。
 条件(.not #変数("フラグ")) 変数宣言 固有,整数{&フラグ}

この御護りの御札を身に付けておけば、茨の道もばら色の道になるかと思います。

佐田守弘(KS-00119)
28182 Re:変数の重複宣言:厄除けの御護り 手塚 修 2004/11/11-18:14
記事番号28172へのコメント
ありがたく頂戴いたします。

使ってみることもできました。メインメニューから開くのではなく、途中のフォームから開いても、
未宣言のエラーなし、変数値の引渡しもできていました。

悲しげさんOgoさんによる不要変数チェックcmdを見ましたが、変数一覧書出しcmdのようなものはないのでしょうか?
このKEVには、なにが、あのKEVには、なにがを手元に置いてフォーム・KEVを作れば重複も避けられるのではないでしょうか。
もし、ないようであればいかがでしょうか?検討してみる価値は?

それと 元気づけられました。茨の道もなんのその。これからも頑張ります。

ありがとうございました。
28186 イベント( .kev )で宣言した変数を一覧するユーティリティ ONnoji 2004/11/11-22:15
記事番号28182へのコメント
>変数一覧書出しcmdのようなものはないのでしょうか?

手塚 修さん、こんにちは。

私( ONnoji )の拙作に、
イベント( .kev )で宣言した変数を一覧するユーティリティがあります。
【多遊】さんのホームページでダウンロードできます。
もしも、よろしければお試しください。
※一括処理で宣言した変数も一覧出来ます。

いまは桐だけ(ダウンロード一覧)
http://mokuchan.hp.infoseek.co.jp/download/dl-list.htm

140  桐ver8 清書ユーティリティ 第2.1版

<追伸>

説明は以下のページをご参照ください。

コラム8 清書ユーティリティ 2.1版 utx_list2
http://www.geocities.jp/siliconvalley_bay_7565/column08.htm

清書ユーティリティ 第2.1版 ヘルプ
http://www.geocities.jp/siliconvalley_bay_7565/utx_list/utx_list2_help.htm

■清書ユーティリティ 第2.1版 ヘルプより

[変数一覧]ツール

・変数宣言コマンドで宣言した変数が一覧できます。
・定数宣言コマンドで宣言した定数が一覧できます。
・イベントハンドラと一般手続きの引数が一覧できます。


28187 桐ver.9 でも、桐ver.9-2004 でも動作します。 ONnoji 2004/11/11-22:19
記事番号28186へのコメント
>140  桐ver8 清書ユーティリティ 第2.1版

書き忘れました。(^^ゞ

桐ver.9 でも、桐ver.9-2004 でも動作しますよ。


28188 Re:桐ver.9 でも、桐ver.9-2004 でも動作します。 手塚 修 2004/11/12-08:17
記事番号28187へのコメント
ダウンロードさせていただきました。

ありがとうございました。

戻る