| Quinoさん、こんにちは。
佐田さんが解説している”条件式を使って絞り込みする”見本をアップしました。
1個の式で複雑な検索または絞込が一発でできて応用が効くので、DOS桐の頃から重宝されています。
項目の文字数制限にもひっかかりません。
見本フォームには3個のコマンドボタンがあり、次のような3通りの式をイベントファイルに書いてあります。
(1) 絞り込み [ID]{#cond(#文字位置([A],&STR)>0 .or#文字位置([B],&STR)>0・・,[],1,"")}
(2) 絞り込み [ID]{#cond(#文字位置([A],&STR) .or#文字位置([B],&STR)・・,[],1,"")}
(3) 絞り込み [ID]{#cond(#文字位置([A],&STR)+#文字位置([B],&STR)・・,[],1,"")}
式の最後の "" は、佐田さんが書いているように、"あり得ない値" にします。
上の例では絞り込み対象に項目[ID](カウンタ型)を指定しており、
カウンタ型には ""(未定義値)や 0 が存在しないので、"" または 0 でいいです。
もし項目[A]など(文字列型)を絞り込み対象に指定する場合には、
"" では未定義値も拾ってしまうので、"あり得ない値"を次のようにします。
(4) 絞り込み [A]{#cond(・・・・・・・・,[],1,"出現しない文字")}
次ぎに、#cond(#条件選択のこと)でなんで絞り込みや検索ができるのか、もう少し説明しときます。
#condの書式
#cond(条件式,a,1,計算式)
条件式のヘルプ
判定 値
真 計算結果または比較結果がゼロでも未定義でもない。
偽 計算結果または比較結果がゼロまたは未定義。
(3)の式の場合
#文字位置の値は 0 か 1以上 になります。
0+0+0+0 = 0 → ゼロまたは未定義 → 偽 → a []
1+0+0+0 = 1 → ゼロでも未定義でもない → 真 → 計算式 ""
1+1+0+0 = 2 → ゼロでも未定義でもない → 真 → 計算式 ""
1+1+1+0 = 3 → ゼロでも未定義でもない → 真 → 計算式 ""
1+1+1+1 = 4 → ゼロでも未定義でもない → 真 → 計算式 ""
と、こんな説明でだいたいわかりますか。(^^;
なお、 + を使っているのは、orの代わりです。 andには * を使います。
・イベントファイル(kev)内容
手続き定義開始 コマンドボタン_a::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
method @フォーム.更新モード設定( 0 )
キー入力 プロンプト=" ", 上書き=する, 初期値="", 終了状態=&秒, &STR
if( &秒 )
絞り込み [ID]{ \
#cond( \
#文字位置( [A] , &STR )>0 \
.or#文字位置( [B] , &STR )>0 \
.or#文字位置( [C] , &STR )>0 \
.or#文字位置( [D] , &STR )>0 \
, [] , 1 , "" \
) \
}
if( .not&選択件数 )
絞り込み解除 1
end
end
手続き定義終了
手続き定義開始 コマンドボタン_b::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
method @フォーム.更新モード設定( 0 )
キー入力 プロンプト=" ", 上書き=する, 初期値="", 終了状態=&秒, &STR
if( &秒 )
絞り込み [ID]{ \
#cond( \
#文字位置( [A] , &STR ) \
.or#文字位置( [B] , &STR ) \
.or#文字位置( [C] , &STR ) \
.or#文字位置( [D] , &STR ) \
, [] , 1 , "" \
) \
}
if( .not&選択件数 )
絞り込み解除 1
end
end
手続き定義終了
手続き定義開始 コマンドボタン_c::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
method @フォーム.更新モード設定( 0 )
キー入力 プロンプト=" ", 上書き=する, 初期値="", 終了状態=&秒, &STR
if( &秒 )
絞り込み [ID]{ \
#cond( \
#文字位置( [A] , &STR ) \
+#文字位置( [B] , &STR ) \
+#文字位置( [C] , &STR ) \
+#文字位置( [D] , &STR ) \
, [] , 1 , "" \
) \
}
if( .not&選択件数 )
絞り込み解除 1
end
end
手続き定義終了
アックン(=^・^=)
|