過去の桐井戸端BBS (桐ver.9)
18954 イベントで検索∨と同じ事をグループ検索でしたい しぼうかん 2003/02/14-23:30
こんばんは。またお知恵をお貸し下さい。

検索 ∨,[年齢]{ 40 }の"∨"をグループ検索に使って
グループ検索 ∨ { [年齢] = 40 },終了状態 = &OK

のような事をしたいのですが、実際はグループ検索に"V"は使えません。
そこで何か他の方法で同じ事をする方法は有りますか。
18956 Re:イベントで検索∨と同じ事をグループ検索でしたい うにん 2003/02/15-00:48
記事番号18954へのコメント
グループ選択解除
絞込 [年齢]{ 40 }
グループ選択
グループ指定 次

ですかねえ。絞ったままがいやなら、このあとさらに

行マーク定義 1
グループ選択解除
絞込解除
グループ選択
ジャンプ 行マーク=1

とか。今回は思いつきだけで未確認です。あしからず。

18957 Re:検索∨と同じ事をグループ検索でしたい 悲しげ 2003/02/15-00:49
記事番号18954へのコメント
どもっ、しぼうかんさん

例1──グループ選択を一旦解除して検索させる。

 グループ選択解除
 検索 ∨,[年齢]{40},終了状態=&実行リターン
 条件(&実行リターン<>1)\
  確認 "お求めのデータはありませんでした"
 グループ選択


例2──「グループ指定 次」を使う

 繰り返し
  グループ指定 次,終了状態=&実行リターン
  if([年齢]=40)
   繰り返し中止
  else if(&実行リターン=0)
   確認 "お求めのデータはありませんでした"
   繰り返し中止
  end
 繰り返し終了


動作未確認ですが、多分例1の方がよいと思います。

18958 Re:イベントで検索∨と同じ事をグループ検索でしたい 今村 誠 2003/02/15-06:23
記事番号18954へのコメント
しぼうかんさんこんにちは、グループ指定はコマンドボタンが簡単です。
→ 機能    機能パラメータ
グループ指定  次    この箱の中で左クリックすると
次とか前とか出てきますので選ぶといいと思います。
ここで大事なことは、何に対して前とか次なのかです。
オブジェクトのリストを表示するとすぐ解ると思いますが、
ヘッダ部にあるグループ項目のリストの一番上の値で決まるのです。
例えば日付にすればそのコマンドボタンを押せば次の日付に、
請求番号をリストの一番上に持っていけばその順番に送られるということです。
 リストの入れ替えはオブジェクトリストの上に移動させたい項目を左クリックしてから、
shiftを押しながら↑矢印を押すと移動します。
イベントを使うまでもないと思いますが、もし使うのであれば、
作ったコマンドボタンをメソッドで実行したらいいと思います。
18963 Re:検索∨と同じ事をグループ検索でしたい うにん 2003/02/15-14:09
記事番号18957へのコメント
>例1──グループ選択を一旦解除して検索させる。
>
> グループ選択解除
> 検索 ∨,[年齢]{40},終了状態=&実行リターン
> 条件(&実行リターン<>1)\
>  確認 "お求めのデータはありませんでした"
> グループ選択

これだと、同じグループ内の次の行を検索してしまうケースがありそうな。

>例2──「グループ指定 次」を使う
>
> 繰り返し
>  グループ指定 次,終了状態=&実行リターン
>  if([年齢]=40)
>   繰り返し中止
>  else if(&実行リターン=0)
>   確認 "お求めのデータはありませんでした"
>   繰り返し中止
>  end
> 繰り返し終了

これは、うまくいきそう。たぶんご希望どおりの動作でしょう。
見つからなかったときに元のグループに戻せば完璧かな?

18964 Re:イベントで検索∨と同じ事をグループ検索でしたい うにん 2003/02/15-14:13
記事番号18956へのコメント
>グループ選択解除
>絞込 [年齢]{ 40 }
>グループ選択
>グループ指定 次

これだと絞り込んだとき元の行が処理対象でないのでだめですね(^^;
元の行が絞った中に入ってるとは限らないし。

18966 皆さん有り難うございました。 しぼうかん 2003/02/15-18:50
記事番号18954へのコメント

うにんさん、悲しげさん、今村さんさっそくのご返答有り難うございます。

いつもくどくどと長い質問をしてしまうので、
今回は例題を含め出来限り簡潔に質問しようとしたのですが、
お答えを実際のイベントに合うようにするとなるとやっぱり大変でした。

方法としていったんグループ選択の解除をして検索し、
もう一度選択し直す方法とグループ化の状態を維持したまま1件ずつ検索する方法を教えて頂いたのですが、
うにんさんがおっしゃる通り、いったんグループ化解除の方法はうまくいきませんでした。

そこで2つ目の方法"グループ指定 次"を使った方法を試してみたところ,うまくいきました。(^^)v

実際は請求書入力フォームに作った印刷用のボタンのイベントに関する問題を単純化した質問だったのです。

まだ実際に何度か使って見ないとどこかに破綻があるかもしれませんがとりあえる下記の様に出来ました。

うにんさん、悲しげさん、今村さんありがとうございました。、<(_ _)>

手続き定義開始 請求書連続印刷::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
メソッド呼び出し @請求書サブ.@フォーム.更新モード設定(0)
メソッド呼び出し @フォーム.更新モード設定(0)
グループ検索 {[請求書印刷状態]="未印刷"},終了状態=&ok
繰り返し (&ok=1 .or &ok=2)
ケース開始
ケース(&ok=1 .or &ok=2)
メッセージボックス "請求書の印刷","この請求書を印刷しますか。",ボタン指定=2,制御文字展開=する,&ok
ケース開始
ケース(&ok=1)
グループ値訂正 { [請求書印刷状態] = "印刷済" },終了状態 = &ok
*レポート印刷 "請求書.rpt"
ケース その他
&ok=1
ケース終了
ケース終了
繰り返し (&ok=1)
グループ指定 次,終了状態=&ok
ケース開始
ケース([請求書印刷状態]="印刷済" .and &ok=1)
&ok=1
ケース([請求書印刷状態]="未印刷" .and &ok=1)
&ok=2
ケース その他
&ok=3
ケース終了
繰り返し終了
繰り返し終了
手続き定義終了


18968 Re:皆さん有り難うございました。 悲しげ 2003/02/15-21:52
記事番号18966へのコメント
しぼうかんさんの記述は字下げが無いので、超見難いですが(^^;)
それはさておき、

>繰り返し (&ok=1)
>グループ指定 次,終了状態=&ok
>ケース開始
>ケース([請求書印刷状態]="印刷済" .and &ok=1)
>&ok=1
>ケース([請求書印刷状態]="未印刷" .and &ok=1)
>&ok=2
>ケース その他
>&ok=3
>ケース終了
>繰り返し終了

とありますが、もし万が一、&ok=1とならないケースが存在した場合
無限ループに落ち込んでしまいませんか?
やはり、次グループの指定ができなかった場合(造語ですが「終端グループ」まで行ってしまった場合)など、
変数の戻り値が0or-1を判定に組み入れた方が無難ぢゃないでしょうか。これが1点目。

次、ふたつの繰り返しループ内で「メッセージボックス」、
「グループ値訂正」、「グループ指定(次)」の変数を全て同じにしていますが
(そのこと自体は特に構わないかもしれませんが)、
その返り値でループ抜け判断を兼ねさせると云うのは、
かなり危うい感じがします。
もうひとつ別変数を経由させる方が無難かと。
18970 Re:皆さん有り難うございました。 悲しげ 2003/02/15-22:14
記事番号18968へのコメント
悲しげさんwroteのNo.18968は、私の勘違いかもしれません。
少なくとも前段はそのようです。&ok=0でループ抜けしますから。(^^;)

後段は・・・・う〜ん、かなり紛らわしいけど、きっと前後関係もあるのでしょうから、
結論としては「よく判らない」です。<(_ _)>
18972 おっしゃるとおりです。 しぼうかん 2003/02/15-22:47
記事番号18970へのコメント
この&okの変数は他のイベントにもよく使っているので、悲しげさんのいわれた通り、
かなり危険な感じがするので別の名に変えることにします。

細かいところまで気配りありがとうございました。

戻る