あいまい検索
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
お世話になります。
ちょっと数日悩んでいるのですが、どうしても何が間違っているのか
分からず・・
ある画面でF5ズーム→子画面表示→F4キーで文字列を指定してあいまい検索
という動作が実現させたいです。
1.子画面のメインソースに検索したいテーブルを指定
2.子画面のタスク特性の「オプション」→「範囲」で以下の式を指定
『備考』 like ('*' & 『あいまい検索文字』 & '*')
3.F4キーで『あいまい検索文字』変数へ文字列を代入
4.子画面で イベント実行 画面再表示
としました。
これであいまい検索する動作になるか、、と思ったのですが実現出来ませんでした。
自分の考え方は間違っているでしょうか
どなたかお分かりになる方いらっしゃいましたら教えて頂けませんでしょうか
ちょっと数日悩んでいるのですが、どうしても何が間違っているのか
分からず・・
ある画面でF5ズーム→子画面表示→F4キーで文字列を指定してあいまい検索
という動作が実現させたいです。
1.子画面のメインソースに検索したいテーブルを指定
2.子画面のタスク特性の「オプション」→「範囲」で以下の式を指定
『備考』 like ('*' & 『あいまい検索文字』 & '*')
3.F4キーで『あいまい検索文字』変数へ文字列を代入
4.子画面で イベント実行 画面再表示
としました。
これであいまい検索する動作になるか、、と思ったのですが実現出来ませんでした。
自分の考え方は間違っているでしょうか
どなたかお分かりになる方いらっしゃいましたら教えて頂けませんでしょうか
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
書き漏れておりましたが、フォーラムの過去ログは参照し、いくつか参考にさせていただいています。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
画面再表示 は使用経験がないです。
ビュー再表示 に変更するとどうなりますか?
ビュー再表示 に変更するとどうなりますか?
投票数:1
平均点:10.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
引用:
画面再表示イベントは、現在位置付いているレコードを再読み込みする為に役立つようですね。
nkmtさんは書きました:
画面再表示 は使用経験がないです。
ビュー再表示 に変更するとどうなりますか?
画面再表示イベントは、現在位置付いているレコードを再読み込みする為に役立つようですね。
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
コメントありがとうございます。
試してみたところ、登録モードになってしまいました。
タスク特性で登録=Noとしたところ、ABENDし
「読取り専用テーブルは更新できません」
エラーが出力されていました。
書き漏れていたのですが、DBはPervasiveです。
likeが使えないのでしょうか・・
試してみたところ、登録モードになってしまいました。
タスク特性で登録=Noとしたところ、ABENDし
「読取り専用テーブルは更新できません」
エラーが出力されていました。
書き漏れていたのですが、DBはPervasiveです。
likeが使えないのでしょうか・・
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
とりあえず、以下2点試してみました。
データビューの
範囲(最小)に「CndRange(『あいまい検索文字』<>'' , '*' & 『あいまい検索文字』)」
範囲(最大)に「CndRange(『あいまい検索文字』<>'' ,『あいまい検索文字』 & '*')」
範囲(最小)に「CndRange(『あいまい検索文字』<>'' ,AsciiChar(0)&『あいまい検索文字』)」
範囲(最大)に「CndRange(『あいまい検索文字』<>'' ,『あいまい検索文字』& AsiiChr(256))」
としてみましたが、結果は代わりませんでした。
該当する文字列がヒットしなかったので、登録モードになろうとしたが、登録を拒否する設定のためABEND、のような・・
データビューの
範囲(最小)に「CndRange(『あいまい検索文字』<>'' , '*' & 『あいまい検索文字』)」
範囲(最大)に「CndRange(『あいまい検索文字』<>'' ,『あいまい検索文字』 & '*')」
範囲(最小)に「CndRange(『あいまい検索文字』<>'' ,AsciiChar(0)&『あいまい検索文字』)」
範囲(最大)に「CndRange(『あいまい検索文字』<>'' ,『あいまい検索文字』& AsiiChr(256))」
としてみましたが、結果は代わりませんでした。
該当する文字列がヒットしなかったので、登録モードになろうとしたが、登録を拒否する設定のためABEND、のような・・
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
小さな新規プログラムでまずはお試しになるといいと思います。
以下解説しますと、照会モードの一覧画面上で 直接検索文字を入力する。
・文字を入力すると、その文字を含む分だけが表示される。
・該当するデータが無くても、こけない(1行も表示されない。)
タスク特性 → 初期モード Q=照会
タスク特性 → 登録 STAT(0,'C'MODE)
↑照会モードだけど0件の時にこけないようにする為。
メインソース:一覧表示したいデータを指定
このタスクの中に 検索文字入力用の変数 を用意。
このデータ一覧表示タスクの画面に、その 検索文字入力用の変数を貼り付ける。
画面に貼り付けた 検索文字入力用変数の特性 → 照会モード時 修正許可=YES
CTRL+R 範囲 → 式 → 範囲式
検索文字入力用変数='' OR 備考 Like ('*'&TRIM(検索文字入力用変数)&'*')
ロジックの中に
V=項目 C=変更 検索文字入力用変数
イベント実行 ビュー再表示
以下解説しますと、照会モードの一覧画面上で 直接検索文字を入力する。
・文字を入力すると、その文字を含む分だけが表示される。
・該当するデータが無くても、こけない(1行も表示されない。)
タスク特性 → 初期モード Q=照会
タスク特性 → 登録 STAT(0,'C'MODE)
↑照会モードだけど0件の時にこけないようにする為。
メインソース:一覧表示したいデータを指定
このタスクの中に 検索文字入力用の変数 を用意。
このデータ一覧表示タスクの画面に、その 検索文字入力用の変数を貼り付ける。
画面に貼り付けた 検索文字入力用変数の特性 → 照会モード時 修正許可=YES
CTRL+R 範囲 → 式 → 範囲式
検索文字入力用変数='' OR 備考 Like ('*'&TRIM(検索文字入力用変数)&'*')
ロジックの中に
V=項目 C=変更 検索文字入力用変数
イベント実行 ビュー再表示
投票数:2
平均点:10.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
nkmtさん
丁寧にコメントありがとうございます!
で、できましたー!
このテクニック
>タスク特性 → 登録 STAT(0,'C'MODE)
> ↑照会モードだけど0件の時にこけないようにする為。
は思いつきませんでした。
ありがとうございます!!!
(水曜日から悩んでいたので、結局3日かかったの・・涙)
おかげで希望通りの動作になりました。
本当にありがとうございました!
丁寧にコメントありがとうございます!
で、できましたー!
このテクニック
>タスク特性 → 登録 STAT(0,'C'MODE)
> ↑照会モードだけど0件の時にこけないようにする為。
は思いつきませんでした。
ありがとうございます!!!
(水曜日から悩んでいたので、結局3日かかったの・・涙)
おかげで希望通りの動作になりました。
本当にありがとうございました!
投票数:1
平均点:10.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
良かったですね。
登録モードになった時、入力が出来ないよう各項目の
修正許可特性の設定が必要でしょうね。
それともう一つ便利な方法がありました。
タスク特性 → 登録 STAT(0,'C'MODE)は
使わずに、
タスク特性 → データ
→ ~のデータビューの許可=YES
こちらの方がより、昔は無かった便利な機能を
活かした使い方です。
失礼しました。
登録モードになった時、入力が出来ないよう各項目の
修正許可特性の設定が必要でしょうね。
それともう一つ便利な方法がありました。
タスク特性 → 登録 STAT(0,'C'MODE)は
使わずに、
タスク特性 → データ
→ ~のデータビューの許可=YES
こちらの方がより、昔は無かった便利な機能を
活かした使い方です。
失礼しました。
投票数:1
平均点:10.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
誤字訂正
~のデータビューの許可
空のデータビューの許可 です。
~のデータビューの許可
空のデータビューの許可 です。
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
nkmtさん
ご丁寧にありがとうございます。
機会があれば試してみたいと思います。
わざわざありがとうございます!
ご丁寧にありがとうございます。
機会があれば試してみたいと思います。
わざわざありがとうございます!
投票数:1
平均点:10.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
nkmtさん
ご丁寧にありがとうございます。
機会があれば試してみたいと思います。
わざわざありがとうございます!
ご丁寧にありがとうございます。
機会があれば試してみたいと思います。
わざわざありがとうございます!
投票数:0
平均点:0.00