過去の桐井戸端BBS (桐ver.9)
21610 サブフォームの直前値を変数に取得する方法を教えてください しぼうかん 2003/07/28-19:53
またお力をお貸し下さい。

メインフォームのA.wfm(対象表A.TBL,伝票形式,セレクション分割3)には[あ],[い]が有ります。

サブフォームのB.wfm(対象表B.tbl,伝票形式,セレクション分割18)には[あ],[い],[う]が有り、
[あ],[い]でグループ化されています。

最終目的は、[う]に入力する時に入力前イベントを使って[う]の
直前値を変数に取得して、その値によって[う]の&編集文字列を
ケースコマンドなどを使って変化させたいと思っています。


質問はグループ化されたサブフォームの[う]に入力する時に[う]の
直前値を変数に取得する方法が有りますでしょうか?という事です。


ちなみにこれがメインフォームの場合はA.tblに[行番号]を作り、
この値を&行番号に取り、Aの多重化.wfmを使って
ジャンプ 行番号=&行番号-1
&う=[う]
などの方法で直前値を変数に取得出来るのですが、
グループ化されたサブフォームではうまくいきません。

よろしくお願いします。
21612 Re:サブフォームの直前値を変数に取得する方法 うにん 2003/07/28-21:07
記事番号21610へのコメント
ジャンプ 行番号=-1
&う=[う]
ジャンプ 行番号=+1

じゃだめなんでしょうか?イベント内なので描画禁止くらいはしておくとして。
グループをまたぎたいということですか?

21613 Re:サブフォームの直前値を変数に取得する方法 masa 2003/07/28-21:15
記事番号21610へのコメント
しぼうかんさん こんばんは

あまり詳しくありませんが、もし違っていましたらすみません。
そのイベントを使う時に、グループのデータを書き出して取得する事は出来ないでしょうか?


21616 Re:サブフォームの直前値を変数に取得する方法 悲しげ 2003/07/28-22:14
記事番号21610へのコメント
どもっ、しぼうかんさん
またまた難解な文章ですが(^^;)、
メインフォームたるA.wfmとサブフォームたるB.wfmとの関係は如何?
A.wfmの「サブフォーム」オブジェクトにおける「グループ値リスト」は?

>ちなみにこれがメインフォームの場合はA.tblに[行番号]を作り、
>この値を&行番号に取り、Aの多重化.wfmを使って
>ジャンプ 行番号=&行番号-1
>&う=[う]
>などの方法で直前値を変数に取得出来るのですが、

う〜ん、特に[行番号]項目を設けなくても
 if(#行番号>1)
  ジャンプ 行番号=-1
  &う=[う]
  ジャンプ 行番号=+1
 end
でも構わないように思いますし、特に多重化wfmを使う必要もあるようには見えません。(^^;)

>グループ化されたサブフォームではうまくいきません。

「グループ化されたサブフォーム」では、どううまくいかないのかを書いた方がいいでしょう。
よく判りませんが、[う]の「直前値」ではなく「直前グループ」の[う]の値」を取得したいのでしょうか?
それによって、例えば、それこそ多重化表で処理するとか、グループ選択解除させるとか、
あるいは単に編集表をb.tblに切り替えるのを忘れていただけとか?

21627 Re:サブフォームの直前値を変数に取得する方法 うにん 2003/07/29-11:02
記事番号21612へのコメント
>ジャンプ 行番号=-1

「入力前」だと「KU1068:対象表が更新中またはグループ操作中のためこのコマンドは使用できません 」になってしまいますね。
つまり、サブフォームだからではなく取得するタイミングが悪いんだと思います。
「レコード移動」イベントで取得しておけばいいと思います。
(フォーカス取得だと伝票の明細部で同じテキストにいる間は発生しないのでだめ)

>グループをまたぎたいということですか?

こっちだとまた別の話になりますが。

21629 Re:サブフォームの直前値を変数に取得する方法 悲しげ 2003/07/29-13:32
記事番号21627へのコメント
あ、「入力前」イベントだったのですね。見落としです。(^^;)
それならば、多重化表を使うと云うのは理解できます。
※#21610の「Aの多重化.wfm」と云うのは、単なる「多重化」の
 タイプミスですよね?
サブフォームの対象表も、同様に、多重化して処理することは可能だと思うのですが
(改めて並べ替えたり、処理対象行を指定させる必要はありますが)。
あるいは「入力前」イベントに入るよりも前、
つまり直前に存在したレコードの[う]の値を常に保持させておくようにして、
その変数値を「入力前」イベントで利用する方法もあります。
ただし、「レコード移動」イベントでは、移動した後の項目値を
取得=新たに入力するために「移動」してしまったレコードの方で値を取得してしまうので、
その辺り、何とか工夫する必要がありますよね?

21630 Re:直前値を変数にキープする方法(レコード移動編) 悲しげ 2003/07/29-13:58
記事番号21629へのコメント
「レコード移動」イベントで直前のレコードの項目値をキープしておく
方法に気づいたので、取り急ぎ挙げておきます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
名札 メイン
 var 固有,文字列{&今う="",&前う=""}
 /*あるいは数値系変数かも?*/



手続き定義開始 フォーム::レコード移動(長整数 &行番号,・・・・
 &前う=&今う,&今う=[う]
 *確認 &前う
手続き定義終了
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

21631 Re:直前値を変数にキープする方法(レコード移動編) 悲しげ 2003/07/29-14:04
記事番号21630へのコメント
云うまでもありませんが、ここでいう「直前のレコード」とは
狭義の「直前」、即ち行番号がひとつ少ないレコードを指して
いる訳ではありません。下から上に上ったり、
検索・ジャンプしたりする場合も含めての広義の直前、云い換えれば、
ここで云う「前」は空間ではなく時間を指しています。

21632 Re:直前値を変数にキープする方法(レコード移動編) うにん 2003/07/29-14:33
記事番号21631へのコメント
>云うまでもありませんが、ここでいう「直前のレコード」とは
>狭義の「直前」、即ち行番号がひとつ少ないレコードを指して
>いる訳ではありません。

普通の「直前値」が欲しければ、先のように「ジャンプ」で
前行に移動して値を取得して戻ってくればいいのです。

21639 うにんさんと悲しげさんへ しぼうかん 2003/07/29-20:06
記事番号21610へのコメント
うにんさん,悲しげさんいつもお返事有り難うございます。

今回はうまくすっきり説明出来たかなと思ったのですが・・・
また×をもらってしまいました。

今回の質問とは関係ないと思うので省略したのですが、説明をわかりやすく
する為にB.wfmに[日付]を追加します。(もし「関係あるよ」と言う場合は説明
もれでした、すいません。)

うまく説明出来るか自信がないのですが、B.wfmは常に連続して
入力される訳では無いのです。
ですから下図(※セレクション分割数は書き込みの都合上変更してます。)の
←(1),←(2),←(3),←(4)の順で入力する場合はレコード移動イベント
は発生しません。

また、ジャンプ 行番号=&行番号-1

のコマンドを←(4)での[う]の入力前イベントで実行しても変数(&う)に取得
したい見た目上の直前値である"外注原稿依頼"を取得出来ず、"印刷"が変数
(&う)に取得されてしまいます。

これは、グループ化(B.wfmのグループ値リストは[あ]と[い]です)が
解除された状態では[う]の並びは

B.tbl

[日付]|[う]
8/1|原稿変更無し
8/2|外注原稿依頼
8/3|印刷
8/4|外注原稿完了

となっているからだと思います。

※この例では日付順に並んでいますが、B.wfmには必ず[日付]順に入力されるとは限りません


またグループ化したままのB多重化.wfmで

ジャンプ 行番号=&行番号-1

を使った場合は←(4)の入力前イベントの時に←(2)の行へジャンプ出来ません。
これはB.tblが下図の様に絞り込まれた状態になっているからだと思います。

[日付]|[う]
8/1|原稿変更無し
9/3|印刷


A.wfmの101が処理対象行の場合の画面

   A.wfm←|→B.wfm(この画面はAA101でグループ化された
       |    レコードを表示しています。)
       |
[あ]|[い]|   AA     |
−−−−−−−−−−−−−−−−−−|
   |   |   101    |
AA |101−−−−−−−−−−−|
   |   |[日付]|[う]   |
−−−−−−−−−−−−−−−−−−|
   |   |8/1|原稿変更無し|←(1)
CC |201−−−−−−−−−−−|
   |   |8/3|印刷    |←(3)
−−−−−−−−−−−−−−−−−−|
   |   |   |      |
AA |102−−−−−−−−−−−|
   |   |   |      |
−−−−−−−−−−−−−−−−−−−


A.wfmの102が処理対象行の場合の画面

   A.wfm←|→B.wfm(この画面はAA102でグループ化された
       |    レコードを表示しています。)
       |
[あ]|[い]|   AA     |
−−−−−−−−−−−−−−−−−−|
   |   |   102    |
AA |101−−−−−−−−−−−|
   |   |[日付]| [う]  |
−−−−−−−−−−−−−−−−−−|
   |   |8/2|外注原稿依頼|←(2)
CC |201−−−−−−−−−−−|
   |   |8/4|外注原稿完了|←(4)
−−−−−−−−−−−−−−−−−−|
   |   |   |      |
AA |102−−−−−−−−−−−|
   |   |   |      |
−−−−−−−−−−−−−−−−−−−

21640 Re:サブフォームの直前値を変数に取得する方法 しぼうかん 2003/07/29-20:08
記事番号21613へのコメント
masaさん、こんばんは.
お返事有り難うございます。


>イベントを使う時に、グループのデータを書き出して取得する
>事は出来ないでしょうか?


すいません、処理のイメージがわかないのですが、
具体的にはどのようなコマンド処理をすればいいのでしょうか?

21641 Re:うにんさんと悲しげさんへ うにん 2003/07/29-21:10
記事番号21639へのコメント
>ですから下図(※セレクション分割数は書き込みの都合上変更してます。)の
>←(1),←(2),←(3),←(4)の順で入力する場合はレコード移動イベント
>は発生しません。

サブフォームの直前値を取得しようとしているのですから、サブフォームのレコード移動イベントを使うのです。

>また、ジャンプ 行番号=&行番号-1
>
>のコマンドを←(4)での[う]の入力前イベントで実行しても変数(&う)に取得
>したい見た目上の直前値である"外注原稿依頼"を取得出来ず、"印刷"が変数
>(&う)に取得されてしまいます。

すでに書きましたが、入力前イベントの処理中はすでに訂正モードになっているので
ジャンプはできません。(実験しないで書くと大抵間違いますね^^;すみません)
できないはずなんですが、「印刷が取得される」というのはどういう現象でしょう??

>※この例では日付順に並んでいますが、B.wfmには必ず[日付]順に入力され
>るとは限りません

入力順に関係なくサブフォームの伝票で1行上の値を取得する、という希望でしたら、
サブフォームのレコード移動イベントで
if (#行番号>1)
 ジャンプ 行番号=-1
 &直前値=[項目]
 ジャンプ 行番号=+1
end
とすることで取得できています。

>またグループ化したままのB多重化.wfmで

wfmでなく.tblのはずなんですが、上記のように編集対象表を使えば済むので多重化は不要です。
(対象行が変わる度にいちいち2回ジャンプするのは馬鹿みたいですが、
とくに表示の乱れなどもなくうまく動いています。)

>を使った場合は←(4)の入力前イベントの時に←(2)の行へジャンプ出来ま
>せん。
>これはB.tblが下図の様に絞り込まれた状態になっているからだと思いま
>す。
>
>[日付]|[う]
>8/1|原稿変更無し
>9/3|印刷

たぶん入力前イベントだからエラーになっていることをいっているのだと思いますが、
(4)の入力前イベントではすでにグループはAA102になっているはずですから、
この説明ではますます混乱するばかりです(?_?)
多重化しているからフォームで表示している表とグループが違うということでしょうかね?

まとめますと、(4)を入力するときに(3)=グループを越えたレコードを参照したいと
なると複雑になりますが、(2)の値を取得するのはサブフォームのレコード移動イベントでできています。

21644 Re:うにんさんと悲しげさんへ 悲しげ 2003/07/29-21:30
記事番号21639へのコメント
どもっ、しぼうかんさん
今回は大奥まで深く入り込まなくてもいいのかなと思っておりましたが、
やはり奥の方が出てきましたね。(^^;)
で、う〜ん、詳しい説明を受けるとますます判らなくなって来ましたので、
私はこれ以上は勘弁させていただいて、今回も降ります。<(_ _)>

ps1
「セレクション分割数」ってのは初めて耳にしました。
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
【学研 カタカナ新語辞典】によれば、
セレクション [selection] 選ぶこと.選抜.選出された人や物.
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
しばらく悩みましたが、これって要するに「セクション」の分割数(伝票形式wfmの)の間違いなんですよね。(^^;)
でも、この分割数って、本件の場合、何か意味があるのでしょうか?
(書き方からすると、何だか重要なことのようにも取れますが)

ps2
[あ][い][う]のように意味不明な名称での説明は、内容の不明さをさらに
倍化させるような気がしないでもありません。少なくともそう云う意見はあります。

psの方が長くてすいません。
21689 Re:サブフォームの直前値を変数に取得する方法 悲しげ 2003/07/31-18:27
記事番号21610へのコメント
ところで、しぼうかんさん

コマンドボタン(機能グループ「入力」)に、機能名「直前値」っての
がありますが、これなんか実行メソッドで利用できないでしょうか?
(私はこれを使ったことはないので、使い勝手とかは判らないですが)

21695 明日早々に結果報告します。 しぼうかん 2003/07/31-22:50
記事番号21610へのコメント
返事が遅れていてすいません。

今日、レコード移動イベント、入力前イベント、編集初期値+入力前イベン
トの3つの方法でうまくいきました。

うまく行かなかった原因などを出来るだけうまく説明出来るようにまとめるのに
手間取っているので、明日早々に報告致します。
21696 リスエスト 悲しげ 2003/07/31-23:26
記事番号21695へのコメント
しぼうかんさん wrote

>うまく行かなかった原因などを出来るだけうまく説明出来るようにまとめる
>のに手間取っているので、明日早々に報告致します。

できるだけ、要点のみを簡潔・明瞭にお願いします。(^^;)
成功した点についてではなく、失敗した方の原因をここで細々と
報告する意義があるかどうかは、少々異論がありそうではありますが、
いずれにせよ、今回はどれくらい簡潔にまとめられるか、期待しています。(^^;)
21713 解決編その1 しぼうかん 2003/08/01-19:01
記事番号21610へのコメント
うまくまとめられたかは全然自信はないのですが・・・

うにんさん、悲しげさんに教えて頂いた"レコード移動イベント"
はうまく行きました。

ついでに入力前イベントでもうまく行きました。

さらに編集初期値+入力前イベントの方法でもうまく行きました。


○最初に試し、ダメだった入力前イベントのコマンド文です


(例1)

&行番号=[行番号]
編集表 &B多重化
ジャンプ 行番号=-1
&う=[う]
編集表 &B
&編集文字列=&う


●入力前イベントでうまく行かなかった原因

[日付]をとばして直接[う]に入力しようとしていた為に、
[日付]に設定してある入力後再計算が働かず、項目計算式に
#行番号が設定してある[行番号]から正しい"行番号"を&行番号に
代入する事ができなかったことが原因でした。


◎入力前イベントでの解決法

[日付]→[う]の順で入力するようにすれば、うまく行きました。


●レコード移動イベントでうまく行かなかった原因

自分の間違った思い込みから、うにんさんと悲しげさんの文章を
よく理解せずに間違った試行錯誤をして悪戦苦闘していました。

思い込み その1

レコード移動イベントはその名称にだまされて、
レコード移動した時だけ発生すると思い込んでいましたが、違っていました。

思いこみ その2

"ジャンプ"コマンドは表示状態でしか使えないので、多重化
フォームを使うしか無いと思い込み、上記の(例1)の様な
コマンド文を書いていました。

※しかし、レコード移動イベントでは"編集表 &B多重化"の様な
編集表の切替は出来ないという事と、編集中なのにこのイベントでは
なぜか"ジャンプ"コマンドを使うことが出来る事がわかりました。


◎レコード移動イベントでの解決法

No.21616の悲しげさん、No.21641のうにんさんが書かれていた方法で、
そのままうまくいきました。


◎編集初期値+入力前イベントでの解決法

[う]の編集初期値に

#計算(#代入(&う,#直前値([う],"")),"")

と書いて、[う]の入力前イベントには、

手続き定義開始 う::入力前(・・・
ケース開始
ケース(&う="外注原稿依頼")
&編集文字列="外注原稿完了"
ケース(&う="なんだかんだ")
・・・
フォーム呼出し・・・
・・・
ケース終了
手続き定義終了

上記の様な感じで書いてうまく行きました。

どの方法がいいかはこれから考えて見ます。

毎度の事ながら、うにんさん、悲しげさん難解な文章に何回も
付き合って頂きありがとうございました。m(_ _)m m(_ _)m

21714 夕方に来た朝刊の様な返事です。 しぼうかん 2003/08/01-19:03
記事番号21610へのコメント
文章の理解が遅れた結果、返答も遅れ、意味は無くなってしまったのですが
礼儀として、うにんさんと悲しげさんの疑問文に対するお答えを書きます。


うにんさんの疑問文に対するお答え


※21644の
>すでに書きましたが、入力前イベントの処理中はすでに訂正モー
>ドになっているので
>ジャンプはできません。(実験しないで書くと大抵間違いますね
>^^;すみません)


編集表 &B多重化

の様に編集表を多重化フォームに切り替えて使うという意味でした。


※21644の
>できないはずなんですが、「印刷が取得される」というのはどう
>いう現象でしょう??


「印刷が取得される」というのは「原稿変更無しが取得される」の間違えでした。

これはサブフォームの2行目に入力する時に

&行番号=[行番号]

で取得した&行番号(値は1)でグループ化されていないB多重化.wfmの
行番号を検索してしまい、最初に入力されたレコードである原稿変更無し"が
取得されてしまう。と言うことでした。

※21612の
>グループをまたぎたいということですか?


グループをまたがず同一グループ内の直前値でした。

※21641の
>多重化しているからフォームで表示している表とグループが違う
>ということでしょうかね?


これは実はとんでもないミスをしていました。
B.tblを開いたときにうっかり置き換えを実行していました。
そのため[行番号]の項目計算式の#行番号が再計算されて、B.wfm(
B.tbl)の[行番号]がグループ毎の連番になっていませんでした。

※No.21639の例でいうと
←(3)レコードの[行番号]には"2"では"3"が、
←(2)のレコードには"1"では無く"2"が入っていました。
アホなミスをしてしまっていました。



悲しげさんの疑問文に対するお答えです。

※21644の

>※#21610の「Aの多重化.wfm」と云うのは、単なる「多重化」の
 タイプミスですよね?


タイプミスでは無くて、非表示のサブフォームとして作ってある
Aの多重化.wfmを使って


手続き定義開始 作業内容::入力前(・・・
&行番号=[行番号]
編集表 &A多重化
ジャンプ 行番号=&行番号-1
&う=[う]
編集表 &A
&編集文字列=&う
手続き定義終了

の様に使うという意味でした。

※21644の

>これって要するに「セクション」の分割数(伝票
>形式wfmの)の間違いなんですよね。(^^;)
>でも、この分割数って、本件の場合、何か意味があるのでしょう
>か?(書き方からすると、何だか重要なことのようにも取れますが)


はい、セレクションの分割数の事です。

本件では多分無関係じゃないかなとは思いましたが、どの様な解決方法が
あるのか分からない為、どんな情報が必要なのかを判断する事は難しく、
とりあえず明らかに不要と思う情報以外は全て書いた方が良いと思って書きました。


>[あ][い][う]のように意味不明な名称での説明


実際の名称を使うとその名称が特殊な場合、質問のイメージがしづらくなり、
又、一般的で似たような例に直して説明すると、
細かいところで求めている内容と食い違って来てしまったりする危険があるので今まで[あ][い]の
ような書き方をしていましたが、

以後出来るだけ具体的な名称(実際の名称又は実際の名称よりイメージが
わきやすい別の名称)を使うようにします。

「こいつの質問は落とし穴付きだ」と見捨てられないうちに説明の技術も
少しずつ上げて行きます。

※自分では最初の時より上達しているつもりだったのですが、まだまだ修行が
足りないみたいです。

ところで失敗した方の原因を報告する事は余り意義がないんでしょうか?

こういう掲示板の礼儀についてはあまり知らないので、その事も回答して
頂いた方への礼儀かな?と思っていたのですが、必ずしもそうでないなら
今後はその点は省略します。

文章力がないと、この程度の文章でも自分の試行錯誤の作業を、ミス無く
まとめて文章として書くのは結構大変なので。
21730 書いてたら深夜になっちゃった 悲しげ 2003/08/02-00:50
記事番号21714へのコメント
しぼうかんさんwrote

>はい、セレクションの分割数の事です。

(^^;)(^^;)(^^;)
「セレクション」ではなく「セクション」、つまり「レ」は不要でしょ?
ってことです。(^^;)

>本件では多分無関係じゃないかなとは思いましたが、どの様な解決方法が
>あるのか分からない為、どんな情報が必要なのかを判断する事は難しく、
>とりあえず明らかに不要と思う情報以外は全て書いた方が良いと思って
>書きました。

セクション分割数なんかは「明らかに不要な情報」だと思うのですが(^^;)、
この度はさらにセ「レ」クションなんて言葉も現われて、ますます解読を
難しくした面もあったりします。(^^;)(^^;)
あんまり情報量が不足では話が見えない。しかし不要な情報が多すぎたら
核心を見えにくくするのみならず、却って読む気にすらなれない。
要は、必要十分な情報を、ほどほどの量で、と云うことなのでしょう。
その辺りの基準が、しぼうかんさんの場合、とてもユニークなんですね。(^^;)

>ところで失敗した方の原因を報告する事は余り意義がないんでしょうか?

場合によっては、失敗談が後学のための参考になることもあるでしょう。
が、それにしても程度問題でして、付録的に少々程度がいいのではないで
しょうか? 自分が如何に失敗したかを、微に入り細に入り延々と展開す
るのは(気持ちは判らないでもないが)一種の自己満足に過ぎないかもし
れないし、こんなの読みたくないと思う人も、もしかしたら少なくないか
もしれない。Q&Aの過去ログ検索でこれら「膨大なる失敗談」が、
どの程度参考(あるいは邪魔?)となりうるか?
この辺り、一般的に結論づけることはできないだろうけれども、
無理矢理まとめると、やはり「程度問題でして、付録的に少々程度がいい」を再掲して、
今宵の「お小言」(^^;)を終わりとします。

21731 Re:解決編その1 うにん 2003/08/02-01:31
記事番号21713へのコメント
うまくいってよかったですね。大体状況も理解できたような。

>◎編集初期値+入力前イベントでの解決法
>
>[う]の編集初期値に
>
>#計算(#代入(&う,#直前値([う],"")),"")
>
>と書いて、

この方法は面白いと思いましたが、初期値はあくまでその項目が未定義のとき
しか計算されないので、未定義の項目でだけ使いたいならいいんでしょうけど、

>[う]の入力前イベントには、
>
>手続き定義開始 う::入力前(・・・
>ケース開始
>ケース(&う="外注原稿依頼")
>&編集文字列="外注原稿完了"
>ケース(&う="なんだかんだ")

&編集文字列=""でないときにも処理したいのだと、「前回の直前値」が
残っているのでうまくいきません。

#失敗例は、「よくある失敗とその対処法」のようなものなら役に立つんでしょう
けど。
#あんまり複雑なケースは書かなくてもいいんじゃないでしょうか^^;

21732 深夜までありがとうございます。 しぼうかん 2003/08/02-01:56
記事番号21730へのコメント

どんな情報をどの程度書けばいいのかという判断は桐の
知識量の不足もあり、なかなか難しいです。

失敗談については、何かの本に成功談と同様に失敗談からも
得る物が大きいと書いてあったので、同じ様に考えていました。

この部分はすぐに直せるので次回からは注意します。

桐の知識ばかりでなく、その他諸々の助言ありがたく頂戴しました。


21733 深夜までありがとうございます。 しぼうかん 2003/08/02-02:11
記事番号21731へのコメント
うにんさん、こんばんは.

[う]が未定義の時だけに処理したいと思っているので、
とりあえず問題はありません。

悲しげさんからも指摘して頂きましたが、次回からは失敗談は
基本的に書かないようにします。

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





21737 Re:あれ? うにん 2003/08/02-13:04
記事番号21733へのコメント
>[う]が未定義の時だけに処理したいと思っているので、
>とりあえず問題はありません。

あれれ?それだと、一番最初に言っていた
「最終目的は、[う]に入力する時に入力前イベントを使って[う]の
直前値を変数に取得して、その値によって[う]の&編集文字列を
ケースコマンドなどを使って変化させたいと思っています。」
を実現するには、編集初期値の計算式に#条件選択を使うだけで済んでしまうような?
まあ、イベントを使えば(ここのスレッドに出てこなかったかもしれない)
他の処理も同時にできるのでいいんですが。

21741 こんな説明でどうでしょうか? しぼうかん 2003/08/02-17:03
記事番号21737へのコメント
うにんさん、まだまだご心配していただきありがとうございます。

えーとすいません。最初の表現が正確では無かったみたいです。

>ケースコマンドなどを使って変化させたいと思っています。」

この表現では既に入力済みの値を変化させる場合も含むという
意味にとれるとは考えませんでした。
不正確な説明でした。

「ケースコマンドなどを使って初期値としていろいろな値を入力
したいと思っています」

という説明が正確なのかもしれません。

しかしこの説明だけではまた、はて?となってしまうかもしれない
ので補足説明として別の例を挙げてみます。

つまり、サブフォームの[う](今回はイメージしやすい例として
[今日の行動]という名前を替わりに付けてみました)の編集初期値に
下記の様な計算式を設定したかったと言うことです。

#条件選択(#直前値([今日の行動],"")="出社","帰社",#直前値([
今日の行動],"帰社"),#値集合{1:風呂,2:寝た,3:遊んだ},#直前値
([今日の行動],"")="遊んだ",#値集合{1:風呂,2:寝た},・・・・

もちろん編集初期値にこんな式は設定出来ません。

そこで#条件選択はケースコマンドで、値集合はフォーム呼び出し
コマンドで替わりをさせてイベントで同じ処理が出来ないかと
考えた訳です。

ただし、説明が難解になったり、問題点が分散してしまうかも
しれないと思って直前値を変数に取得した後の処理について詳しく書きませんでした。

21744 Re:こんな説明でどうでしょうか? うにん 2003/08/02-17:49
記事番号21741へのコメント
>#条件選択(#直前値([今日の行動],"")="出社","帰社",#直前値([
>今日の行動],"帰社"),#値集合{1:風呂,2:寝た,3:遊んだ},#直前値
>([今日の行動],"")="遊んだ",#値集合{1:風呂,2:寝た},・・・・

なるほど、直接値を設定する(だけのこともあるけど)よりも値集合を
変化させたいという希望があったのですね。

>そこで#条件選択はケースコマンドで、値集合はフォーム呼び出し
>コマンドで替わりをさせてイベントで同じ処理が出来ないかと
>考えた訳です。

値集合は、入力支援ボタンのリスト値を書き換える手も考えられますね。

戻る