過去の桐井戸端BBS (桐ver.9)
30419 イベントを使用して絞り込み後に表引きした後絞り込みの解除ができない コージ 2005/07/06-20:26
いつもお世話になります。

V9を使用し、フォームのイベントで
表引き表を絞り込み後に表引きにしたく頑張ったところ、
表引きするところまではできたのですが、
表示状態にした場合に絞り込みが解除できないのでお助けください。

過去ログを参考に下記のようにしました。
http://www.fuku3.com/habata/kbbs/kakov8/13808.htm

--------------------------------
名札 メイン
表 "商品.tbl"


手続き定義開始 商品::フォーカス取得(文字列 &喪失オブジェクト名)
 &str = [顧客コード]
 if( &str )
   編集表  "商品.tbl"
   絞り込み [顧客コード]=&str
 end
手続き定義終了

手続き定義開始 商品::フォーカス喪失(文字列 &取得オブジェクト名)
 if( &str )
   編集表 "商品.tbl"
   絞り込み解除 *
 end
手続き定義終了
--------------------------------

○動作状況○
1.項目[商品]は"商品.tbl"を[顧客コード]で絞り込めます。
2.項目[商品]から次の項目に移動した場合に絞り込みは解除されます。

◎問題点◎
項目[商品]のところで表示状態にした場合に絞り込みが解除されない。
(他のレコードに移動して確認)

●やってみたこと●
1.絞り込み前に解除してみましたがダメでした。
   編集表  "商品.tbl"
   絞り込み解除 *
   絞り込み [顧客コード]=&str
2.他のイベントを探したが解りません。

表示状態にしたときにも絞り込みを解除するには
どのようにすればよいのでしょうか。ご教授ください。
30420 Re:イベントを使用して絞り込み後に表引き 佐田 守弘 2005/07/06-21:09
記事番号30419へのコメント
コージさん
この種の不具合は、実際に試してみないとなかなか原因が分らないものですが、
とりあえず書かれている内容からの推定で、考えられる事をコメントいたします。

●やりたい事
書かれているイベントハンドラから推定するに、先に入力された顧客コードを使って、
商品.tblの表から同じ顧客コードのレコードをだけを絞り込んでおき、表引きに使いたいという事の様ですね。

●使用するイベント
商品.tblの表を顧客コードで絞り込むのは、入力表(これは書かれていない)の
フォームの顧客コードを入力するオブジェクトの、ソース値更新イベントで行ってみて下さい。
このイベント発生時が、顧客コードが確定するタイミングだと思います。

絞り込みを解除するタイミングですが、上記で絞り込みを行う前に解除するので構いません。
あるいは、どうしても別のイベントで解除するのであれば、表引き入力をする項目のフォーム上の
オブジェクト(これも書かれていないので不明)のソース値更新イベントで解除して下さい。
これも、ソース値が更新されて、入力が確定したタイミングなので、
表引き表の絞り込みを解除して構わないタイミングです。

●フォーカス取得等のイベント
これは単にそのオブジェクトの上をマウスカーソルが通ってフォーカスを得たか、
フォーカスを失ったかといった場合にも発生します。
質問の目的には適しません。

●編集表を切替えたら、元に戻す
俗な喩えで失礼しますが、衣服を脱いで風呂に入り、風呂から出たらまた衣服を着ます。
決して風呂に入ったままの裸の姿で外には出ません。

同じ様な話で、編集表を切替えて、絞り込みや絞り込み解除などを操作を行ったら、
終了後にもう一度編集表コマンドを使って、元の表に切替えて下さい。

書かれている以下のコマンド
 >   編集表  "商品.tbl"
 >   絞り込み解除 *
 >   絞り込み [顧客コード]=&str
だけでは、商品.tblに切替える前の表が編集表に戻っていません。

佐田守弘(KS-00119)
30421 Re:イベントを使用して絞り込み後に表引き コージ 2005/07/07-00:34
記事番号30420へのコメント
佐田さんありがとうございます。

>●編集表を切替えたら、元に戻す
の説明たいへん解りやすく助かります。
基本中の基本を怠っておりました。

また、説明不足があったこと、お手数をお掛けしたこと
先にお詫びいたします。

再度説明いたしますと、
"売上.tbl"を"売上.wfm"で編集するとき、
項目[商品]を行挿入・訂正時に"商品.tbl"を表引き表として使用し、
"売上.tbl"の[顧客コード]で"商品.tbl"の[商品]を絞り込みます。

(表引き表は[商品]オブジェクトの▼をクリックして表示します)

行挿入の入力状態では(タブキーで[商品]に移動した場合)
"商品.tbl"の[商品]を絞り込みできません。
(一旦、別の項目をクリックしてから、再度[商品]をクリックすると絞り込まれます。)

表示状態から訂正状態にした場合には最初のレコードは絞り込みできますが、
フォーカスを[商品]にした表示状態で次のレコード(次行)に移動し、
[商品]を訂正状態にして表引き表をみると前のレコード(前行)の絞り込みのままでありました。
(一旦、別の項目をクリックしてから、再度[商品]をクリックすると絞り込まれます。)

[商品]以外の項目にいったんフォーカスを移動してから再度[商品]にフォーカスを移動すれば
現在行の[顧客コード]で表引き表が絞り込まれます。
これをレコードを移動し訂正状態にしたときでも
現在行の[顧客コード]で表引き表が絞り込みできるようにしたいのです。

ご説明いただいた内容を確認してみると
先に定義したイベントでは当然の結果であったと何となく理解できました。

>ソース値更新イベントで行ってみて下さい。
とありましたが、一括処理ヘルプには
「ソース値更新」イベントの説明が少なく、
あまり理解できていなく、今回の場合の使い方が不明でしたので
項目[商品]をクリックしたときに[顧客コード]を取得して
絞り込ませるイベントを定義してみました。

-----------------------------

手続き定義開始 商品::マウス左ダウン(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
 &str = [顧客コード]
 if( &str )
   編集表  "商品.tbl"
   絞り込み解除 *
   絞り込み [顧客コード]=&str
   編集表 "売上.tbl"
 end
手続き定義終了

手続き定義開始 商品::フォーカス取得(文字列 &喪失オブジェクト名)
 &str = [顧客コード]
 if( &str )
   編集表  "商品.tbl"
   絞り込み解除 *
   絞り込み [顧客コード]=&str
   編集表 "売上.tbl"
 end
手続き定手続き定義終了

-----------------------------

とりあえず、行挿入で[商品]にカーソルが移り▼をクリックしたとき、
表示状態からで[商品]オブジェクトの▼をクリックしたときに
[顧客コード]に対応した絞り込みができるようになったようです。

「マウス左ダウン」イベント又は「フォーカス取得」イベントのどちらか一方だけのときは
行挿入で[商品]にカーソルが移り▼をクリックしたときは
絞り込みが行えないようです。
(一旦、別の項目をクリックしてから、再度[商品]をクリックすると絞り込まれます。)

説明が長くなりましたが、
もっとスマートで適切なイベントの使用があると思いますので、
お気付きの点などがありましたらご指摘いただければ幸いです。
30422 Re:イベントを使用して絞り込み後に表引き bonito 2005/07/07-10:09
記事番号30421へのコメント
「行挿入開始」イベント及び「行訂正開始」イベントで

>&str = [顧客コード]
> if( &str )
>   編集表  "商品.tbl"

    絞り込み解除 * /*---念の為?---*/
    /*---私なら「行挿入終了」「行訂正終了」で解除するけど---*/

>   絞り込み [顧客コード]=&str
> end

としさらに[顧客コード]の「ソース値更新」イベントでも同様処理する...でも
if([商品コード]<>&str)をかけといた方が美しいかなぁ?

30424 補足 (^^;: bonito 2005/07/07-11:26
記事番号30422へのコメント
>if([商品コード]<>&str)をかけといた方が美しいかなぁ?
これは「ソース値更新」イベントの場合...商品コードを
変更せず単にEnterを押した場合を想定しての事です

あと
「マウス左ダウン」イベントは特殊な場合に使用する事にして
通常は「マウス左クリック」イベントをお使いになる事をオススメします (^^;
30425 Re:イベントを使用して絞り込み後に表引き アックン 2005/07/07-15:02
記事番号30419へのコメント
コージさん、こんにちは。
過去ログで発言した本人です。(^^;

入力前イベントで
 絞り込み解除
 絞り込み

同じテキストオブジェクトの
入力後イベントで
 絞り込み解除

とすれば、1個のテキストオブジェクトだけで実現できると思います。
表引きするテキストオブジェクトが複数個並んでいる場合でも、対応できるはずです。

手続き定義開始 商品::入力前( ・・略
 &str = [顧客コード]
 if( &str )
   編集表 "商品.tbl"
   絞り込み解除 *
   絞り込み [顧客コード]=&str
 end
手続き定義終了

手続き定義開始 商品::入力後( ・・略
   編集表 "商品.tbl"
   絞り込み解除 *
手続き定義終了

アックン(=^・^=)
30426 Re:イベントを使用して絞り込み後に表引き コージ 2005/07/07-17:50
記事番号30422へのコメント
bonitoさんありがとうございます。

>「行挿入開始」イベント及び「行訂正開始」イベントで

テキスト項目[商品]でイベントを定義していましたが、
フォームオブシェクトでイベントを定義すればよい訳ですね。

テキスト項目[商品]でイベントを定義することに拘っていたので
なんだか変な定義をしていたようですね。

「行挿入開始」「行訂正開始」イベントに変更したいと思います。
30427 Re:補足 (^^;: コージ 2005/07/07-17:56
記事番号30424へのコメント
bonitoさんまたまたありがとうございます。

>「マウス左ダウン」イベントは特殊な場合に使用する事に
>して通常は「マウス左クリック」イベントをお使いになる
>事をオススメします

「マウス左ダウン」と「マウス左クリック」は
あまり深く考えずに先にあった「マウス左ダウン」を使っていました。
(他のテキスト項目では「マウス左クリック」を使っているんですがね。)

ご助言ありがとうございました。
まだ他のテキスト項目のイベントで解らないことがありますので
再度質問したときは回答よろしくお願いいたします。


30428 Re:イベントを使用して絞り込み後に表引き コージ 2005/07/07-18:13
記事番号30425へのコメント
アックンさんありがとうございます。

「入力前」「入力後」イベントでも良い訳ですね。
試してみたいと思います。

桐歴は割と長いのですがイベントは最近使い始めたので
どれをどう使って良い物やらという感じ(頭が固いのでしょう)と
イベントはとても便利である反面、やはり奥が深いという感じですね。

一括処理にようやく慣れたところですが、
これからイベントを頑張って勉強したいと思います。

これからもご助言よろしくお願いいたします。
30429 Re:イベントを使用して絞り込み後に表引き アックン 2005/07/07-19:44
記事番号30428へのコメント
コージさん
>「入力前」「入力後」イベントでも良い訳ですね。
入力前・ソース値更新の組み合わせが基本だと思います。
今夜は今から外で会議で書き込む時間がとれないので、また明日書きます。

30430 使用するイベント 佐田 守弘 2005/07/07-21:11
記事番号30428へのコメント
コージさん
それぞれのイベントは、それが発生するタイミングと、その時の桐の状態にポイント(特徴)があります。
それらはコマンド&イベントリファレンスに書かれています。

#30422で
 >「行挿入開始」イベント及び「行訂正開始」イベントで
#30427で、
 >「マウス左ダウン」と「マウス左クリック」は
およびこの直前の#30426の
 >「入力前」「入力後」イベントでも良い訳ですね。
ですが、確かにそういったイベントもあります。

もちろん、使い様によってはそれらのイベントを使うのも不可能とは申しません。
サーカス的な技法としては成り立つと思います。

しかし今回の課題は、顧客コードの値が確定した段階で、
この値で絞り込みを行いたいのだと受け取っております。
そうであれば、値が確定、すなわち、ソース値更新イベントで動かすのが、
正統的な手法と思うのですが、いかがでしょうか。

佐田守弘(KS-00119)
30431 Re:使用するイベント コージ 2005/07/07-22:50
記事番号30430へのコメント
佐田 守弘さんありがとうございます。

>それぞれのイベントは、それが発生するタイミングと、その時の桐の状態
>にポイント(特徴)があります。それらはコマンド&イベントリファレンスに
>書かれています。

これは[スタート]-[すべてのプログラム]-[桐v9]-[桐一括処理ヘルプ]で開く
「一括処理&イベントリファレンス」のことでよろしいでしょうか。

>しかし今回の課題は、顧客コードの値が確定した段階で、この値で
>絞り込みを行いたいのだと受け取っております。

基本的にはおっしゃる通りです。
但し、一旦[顧客コード][商品]を入力した後(表示状態)、
また、桐を再起動した後などに[商品]だけを修正(訂正)することもあります。
([商品]オブジェクトの▼をクリックして、表引きウィンドウから値を選択します。)
このような場合でも「ソース値更新」イベントで動かして問題ないのでしょうか。

「ソース値更新」イベントの説明(ヘルプ)の内容が簡単であまり理解できておりません。

「ソース値更新」イベントの詳細を説明いただければ幸いです。
30438 Re:使用するイベント アックン 2005/07/08-20:29
記事番号30431へのコメント
コージさん
>した後などに[商品]だけを修正(訂正)することもあります。
実務ではこういうケースがあるので、
[商品]オブジェクトだけで、絞り込み→表引き→絞り込み解除 という一連の動作を完結させるとやりやすくなります。

こうすれば、行挿入(行追加)にも行訂正(訂正)にも対応できます。
また、フォーム定義でオブジェクトの入力順を変更しても、対応できます。

入力前→入力後 はセットになるイベントなので、覚えやすく、理解しやすいと思って紹介しました。

ただ、現在ぼくが使っている会計処理は、入力前→ソース値更新 です。
その理由は、絞り込み解除をソース値更新イベントに受け持たせることで、
入力前イベントの処理を速めるためです。
(イベントは、入力後・ソース値更新 の順に発生します。)

アックン(=^・^=)
30439 Re:イベントを使用して絞り込み後に表引き アックン 2005/07/08-20:34
記事番号30422へのコメント
bonitoさん> お久しぶりです。
行挿入開始・行挿入終了,行訂正開始・行訂正終了についてコメントしますね。

ちゃんと動作しているように見えるのですが、絞り込み・絞り込み解除等の動作を不要なオブジェクトで行っています。

それを回避するために、フォーカスオブジェクトによって絞り込めばいいと思って、過去に試したことがあります。

 var 文字列 { &focus }
 method @フォーム.フォーカスオブジェクト取得( &focus )
 if( &focus="t商品" )
   :
 end

これだけでは破綻します。

私のフォームでは、表引きを連続して絞り込んだり解除したりと複雑なことをします。
絞り込みを解除して表引きする必要もあれば、絞り込みを重ねることもします。
こういうケースには対応できません。

表引き表を絞り込む技術は、それほど容易いものではないと感じることしきりです。

あ、今思い出しましたが、
絞り込み直前にいったん解除をしている理由は、
「表引き表が空です」というエラーを回避するためだったと思います。

30445 桐のコマンド&イベントリファレンス 佐田 守弘 2005/07/08-22:07
記事番号30431へのコメント
コージさん

 >これは[スタート]-[すべてのプログラム]-[桐v9]-[桐一括処理ヘルプ]で開く
 >「一括処理&イベントリファレンス」のことでよろしいでしょうか。

多分そうだと思うのですが、私の環境ではなぜか、プログラムの桐v9の中に
これが入っていないので、残念ながらそうであると断言できません。

実体は、
 C:\K3\KIRIV9\Help\KIRICMD9.CHM
です。
(私はこれの直接リンクをデスクトップと[スタート]メニュー直下に作っています)

佐田守弘(KS-00119)
30446 ソース値更新イベント 佐田 守弘 2005/07/08-22:36
記事番号30431へのコメント
コージさん

ソース値更新イベントについて簡単に説明します。

・ソース値とは
オブジェクトのソース値、テキストオブジェクトであれば、表の項目値の事です。

・ソース値更新とは
フォーム上でテキストオブジェクトの上で、値の修正や、新規入力を終えて、
Enterキーを押して値が確定すると、その値がソース地である表の項目値に
書き込まれます。
この時、つまりフォーム上での編集を終えて、表ファイルの項目にデータが
書き込まれた瞬間が、ソース値更新イベントが発生するタイミングです。
つまり質問の題意で言えば、顧客コードの値が確定した時点が、ソース値更新イベントが発生するタイミングです。

日常的な例で説明します。適切な例でないかも知れません。
(彼女にプロポーズしようとして)
・彼女の家の捜し当てる:フォーカス取得イベント
・プロポースしようと彼女に会う:入力前イベント
・彼女から答えを受ける:入力後イベント
・婚姻届を出して入籍する:ソース値更新イベント
いかがでしょうか、これらの違いがお分り頂けたでしょか。

●ちょっとだけ難しい補足
これらの詳しいタイミングについては、老師ことR師匠の教科書があります。

ここでは詳しいタイミングの話は横において、フォーム上で表の項目値あるいは
変数値を入力するテキストオブジェクトでどういった順序で何が起きているのかを
できるだけ簡単に説明します。

仮にここでは表の項目値をソース値とするフォームのテキストオブジェクトの例で説明します。
フォーム上のテキストオブジェクトは、その時のソース値、つまりソース値が表の項目値であれば、その値が表示されています。
そのテキストオブジェクトにフォーカスを当てて、スペースバーの押下などで、値の編集に入るとします。

桐のデータベースエンジン(表の項目値を扱いプログラム部分)は、項目値の編集機能は持っていません。
項目値の変数は、データベースエンジンとは別の内部エディタに任せています。

ソース値の編集に入ると、現在のソース値を初期値として、文字列として値を
編集するエディタが起動します。
このエディタを起動する直前に発生するのが入力前イベントです。入力前イベントでは、
エディタに引き渡す初期値の設定などが行えます。
つまり未入力のソース値でも、イベント上で初期値を設定するといった操作を行いたい時に、このイベントを使います。

さて、エディタの機能でソース値の変更を行い、値を確定すると、エディタが終了して、編集された値がデータベースエンジンに戻されます。
このエディタが終了するタイミングで、データベースエンジンに値が戻される前のタイミングで発生するのが入力後イベントです。
値が規定に合わない、値の書式が規程通りでないといったチェックを行って、
再度エディタに値の入力のやり直しを求める時に、入力後イベントを使います。
まあ、高裁で地裁に差し戻しといったらお分り頂けるでしょうか。

エディタが終了して、編集値がデータベースエンジンに戻されると、この値が、
表であれば項目値に書き込まれます。変数がソース値なら、変数の値がここで代入されます。
この時点でソース値が確定します。これがソース値更新イベントの発生タイミングです。

佐田守弘(KS-00119)
30447 Re:桐のコマンド&イベントリファレンス コージ 2005/07/08-22:36
記事番号30445へのコメント
佐田 守弘さんお調べいただいてありがとうございます。

>多分そうだと思うのですが、

C:\K3\KIRIV9\Help\KIRICMD9.CHMを
確認したところ[スタート]から開くファイルと同じ物でした。
ありがとうございました。


30448 Re:使用するイベント コージ 2005/07/08-22:44
記事番号30438へのコメント
アックンさんこんばんは。

>ただ、現在ぼくが使っている会計処理は、入力前→ソース値更新 です。
>その理由は、絞り込み解除をソース値更新イベントに受け持たせることで、
>入力前イベントの処理を速めるためです。
>(イベントは、入力後・ソース値更新 の順に発生します。)

処理速度まで考えてイベントを定義されているは流石ですね。
私はまだそこまで考える余裕がありません(^_^;)

ご助言いただいたことをいろいろと試して
自分の環境に適するように頑張ってみます。

ありがとうございました。
30449 ソース値更新イベント:一部補足 佐田 守弘 2005/07/08-22:50
記事番号30446へのコメント
タイミングについて一部補足します。

>このエディタを起動する直前に発生するのが入力前イベントです。
そしてエディタが起動して、値の入力モードが開始した直後に編集開始イベントが発生します。

例の例を多少補足すると
 >・プロポースしようと彼女に会う:入力前イベント
の次に、
・プロポーズの言葉を伝える:編集開始イベント
があります。

佐田守弘(KS-00119)

30450 Re:ソース値更新イベント コージ 2005/07/08-23:11
記事番号30446へのコメント
佐田 守弘さんこんばんは。

とても詳しく解りやすい説明ありがとうございます。

表とフォームでのデータの受け渡しの理論が解りました。
今まではフォームは表にデータを入力する仮面程度ととしか理解していませんでした。
また、「ソース値更新イベント」が確定したときに動作するということが理解できました。
今までは([商品]を)入力・訂正時に値([顧客コード])を更新しなければイベントが発生しないと、
単純に考えておりました。お恥ずかしい。

佐田さんにご説明いただいたこが桐のヘルプに書かれていれば・・・
イベント初心者には理解しやすいでしょうね。

「ソース値更新」を使ってイベント定義を修正、動作確認してみたいと思います。

また機会がありましたらご助言方よろしくお願いいたします。
ありがとうございました。
30451 Re:ソース値更新イベント:一部補足 コージ 2005/07/08-23:21
記事番号30449へのコメント
佐田 守弘さん補足ありがとうございます。

発生時期については桐ヘルプでイベントごとの説明(「イベントの発生」)
で書いてあったりしますが、
発生順にまとめて説明されていればいいのにと思う今日この頃です。

佐田さんに説明いただいた発生時期を参考に一覧でまとめて
今後のイベント定義に役立たせたいと思います。

補足いただきましてありがとうございました。
30452 Re:入力支援ボタン 尾形 2005/07/09-06:37
記事番号30438へのコメント
どうも、こんにちは

解決済のようですが、こんなのも有りって事で。

>その理由は、絞り込み解除をソース値更新イベントに受け持たせることで、
>入力前イベントの処理を速めるためです。
入力支援ボタンをつけて、「入力支援オープン」イベントで
商品.tbl を絞り込みしてもいいかもしれないですね
入力者って慣れてくると、コード番号覚えてしまって
表引きを開かずに、コード番号を直接入力する事が
多くなってくると思うので、表引きを開く時だけ処理する
ってのもありかも

自分的には、絞り込み解除って殆ど時間かからないけど
絞り込みに時間かかる気がします

30454 Re:入力支援ボタン コージ 2005/07/09-11:38
記事番号30452へのコメント
尾形さんこんにちは。

>>その理由は、絞り込み解除をソース値更新イベントに受け持たせることで、
>>入力前イベントの処理を速めるためです。

またまた勉強になります。

>入力支援ボタンをつけて、「入力支援オープン」イベントで
>商品.tbl を絞り込みしてもいいかもしれないですね

「入力支援オープン」イベントについては
桐ヘルプに例題があったと思いますが、
よく読んでいないので助言を参考に勉強したいと思います。

イベントの種類は沢山あるので
いろいろと迷うところもありますが、
1つずつ頭に入れながら試行錯誤したいと思います。

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



30455 Re:ソース値更新イベント:一部補足 悲しげ 2005/07/09-11:39
記事番号30451へのコメント

>発生順にまとめて説明されていればいいのにと思う今日この頃です。

V8初期sp当時※のものですが、

http://www2u.biglobe.ne.jp/~s_tanaka/pro/event/event01.htm

に、いか様がまとめたものが保存されています。ご参考までに。

※V9新設のイベントについての記述はありません。ひょっとすると
 V8後期に追加されたイベントも?(未確認)

この機会にどなたか改訂していただけませんか?(お願いモード)

30456 Re:ソース値更新イベント:一部補足 アックン 2005/07/09-12:45
記事番号30455へのコメント
>この機会にどなたか改訂していただけませんか?(お願いモード)
書いた本人の承諾なしに勝手に人がいじってはまずいんじゃないですか。(^^;
いかすぱさんに追加してもらってはどうでしょうかね。

P.S.
悲しげさん> 最近のメールアドレスちょうだい。紛失しました。
ついでだから、いかさんに追加オーダーしといてください。まかせたび。(^^;

アックン(=^・^=)
30457 Re:ソース値更新イベント:一部補足 コージ 2005/07/09-16:49
記事番号30455へのコメント
悲しげさんこんにちは。

ご紹介いただいたページをさっそくプリントアウトしました。
これからは座右に置いて参考にさせていただきます。

ありがとうございました。
30458 Re:ソース値更新イベント しぼうかん 2005/07/09-17:49
記事番号30450へのコメント
コージさん、こんばんは.

>今までは([商品]を)入力・訂正時に値([顧客コード])を更新しなければイベン
>トが発生しないと、単純に考えておりました。お恥ずかしい。

確か悲しげさんかな?も以前に"ソース値更新"というイベント名に異論を
唱えていらっしゃったと思いますが、私もこの名称はどうかと思います。

かといって"入力後の次イベント"なんて変だし、何でもピッタリの名前を
付けるというのは難しいですね。

自分の場合は本当に更新した時だけイベントを発生させたい時には
入力前イベントで入力前のソース値を変数に取得して置きます。

そしてソース値更新イベントに入力前のソース値が入った変数とソース値とを
比較して(ifコマンドで)、違ったときにだけ発生させる様にコマンドを書いて
置けば"本当"のソース値更新イベントとして使えると思います。

なお今回のケース(よく理解してはいないのですが)では自分だったら表引きの
替わりに面倒でも表引き用のフォームを作ってフォーム呼び出しコマンドで
表引きの替わりをさせると思います。


余談

悲しげさんがNo.30455で要望しているイベント発生順に追加してフォームの
実行コマンドとか表の編集・挿入初期値式とかその他の桐で実行される
プログラムの発生順とかが桐のリファレンスに書いてあったら良いですね。


30459 Re:ソース値更新イベント アックン 2005/07/09-19:47
記事番号30458へのコメント
しぼうかんさん、こんにちは。
このスレの質問と回答はもう横に置いておいてと。
気にかかったことがあるので、ちょっと。

>自分の場合は本当に更新した時だけイベントを発生させたい時には
>入力前イベントで入力前のソース値を変数に取得して置きます。
>
>そしてソース値更新イベントに入力前のソース値が入った変数とソース値とを
>比較して(ifコマンドで)、違ったときにだけ発生させる様にコマンドを書いて
>置けば"本当"のソース値更新イベントとして使えると思います。

それはちょっと違うんです。この手のイベントは必ず発生します。

行挿入か行訂正で入力前イベントが発生しますね。
次ぎに、項目値を変更してもしなくても、ソース値更新イベントが必ず発生します。

入力前イベントもONにしていれば、
入力前→入力後→ソース値更新の順で必ず発生します。
発生をキャンセルできません。

もし、編集前と編集後の値を比べたいときは、
ソース値更新に書くのではなく、入力後に書きます。
そのためのイベントが入力後イベントなんです。

イベントの発生は「トレース出力ウィンドウ」でリアルタイムに確認できます。
やってみてください。

イベントが発生する順は、実際の場面では入れ子(ネスト)で発生することもあります
し、実に多様です。
いかさんが書いたのは基本中の基本で、ぼくもこれで勉強しました。

アックン(=^・^=)
30460 Re:ソース値更新イベント アックン 2005/07/09-19:49
記事番号30459へのコメント
誤)入力前イベントもONにしていれば、
正)入力後イベントもONにしていれば、

30461 Re:ソース値更新イベント しぼうかん 2005/07/09-22:19
記事番号30459へのコメント
>次ぎに、項目値を変更してもしなくても、ソース値更新イベントが必ず発生します。

アックンさん、ご迷惑をお掛けします。(^^;
これはわかっていたんですが慢性疾患ともいえる文章の書き間違いが有りました。

>>コージさん

というわけでコージさんアックンさんが引用した部分の内私の(誤)の文章は
(正)の文章に読み替えて下さい。

また編集前の値と比較して実行するためのコマンド文ははアックンさんが
書かれているようにもちろん入力後イベントにも書けます。
こういう場合は入力後イベントに書く方が普通みたいですね。
私は今日初めて知りました(^^;



(誤)
>そしてソース値更新イベントに入力前のソース値が入った変数とソース値とを
>比較して(ifコマンドで)、違ったときにだけ発生させる様にコマンドを書いて
>置けば"本当"のソース値更新イベントとして使えると思います。



(正)
そしてソース値更新イベントに入力前のソース値が入った変数とソース値とを
比較して(ifコマンドで)、違ったときにだけ自分がしたいコマンド文を実行させる様に
コマンド文を書いて置けば"本当"のソース値更新イベントとして使えると思います。

30482 Re:ソース値更新イベント コージ 2005/07/12-14:02
記事番号30461へのコメント
ご連絡が遅くなりました(~_~;)

イベントの種類がいくつもあり、またその使い方が様々であるということを
改めて知ることができました。

また、ソース値更新イベントも含め、イベントの1つ1つをきちんと理解して
適切に使え分けられるようになるには少し時間が必要なようです。

ありがとうございました。
30493 Re:ソース値更新イベント:一部補足 いかすぱげてぃ 2005/07/13-12:57
記事番号30456へのコメント

>>この機会にどなたか改訂していただけませんか?(お願いモード)
>書いた本人の承諾なしに勝手に人がいじってはまずいんじゃないですか。(^^;
>いかすぱさんに追加してもらってはどうでしょうかね。

ご無沙汰いたしております。
実は、久しぶりの書き込みに、非常に緊張しております。

結論から言えば、勝手にいじってもらって結構でございます。
というか、自分で追加する根性も気力もございません。

あれは、V8本を書く予定で調べたものですが、出版の話が途中でオジャンに
なってしまい、そのままお蔵入りするのも、なんだったので、多遊さんのところへ
アップしたものだったように記憶しております。(昔過ぎて記憶が曖昧)

もし、皆さんのお役に立てるのであれば、どう追加、改訂していただいても結構ですので、よろしくお願い致します。

ということで、勝手に佐田さんに一任します。

いかすぱげてぃ


30515 Re:ソース値更新イベント:一部補足 アックン 2005/07/14-13:31
記事番号30493へのコメント
つうことで、佐田さんが書き始めました。
では、締切厳守、字数厳守、校正不要、原稿料ナシ、リンク自由ってことで、よろしく。(^^;

アックン(=^・^=)

戻る