過去の桐井戸端BBS (桐ver.9)
26876 一括処理のキー入力コマンドで入力した文字の前後に半角空白を付けて検索したい 野崎 2004/06/30-10:57
初めて投稿させて頂きます。(初心者)
桐ver.9 を使用しています。

早速質問です。
表中のある項目(レコードは英文)で、例えば send を含むレコードを選択する際、"絞り込み 値"で send の前後に
半角の空白を入れて、絞り込み実行をすると、検索がうまくいきます。

これを、一括処理上で半角の空白をいちいち入力せず行いたいのです。
そこで、"キー入力コマンド"で検索する単語を入力させ、自動でその単語の前後に半角の空白が入るように
定義上で設定したいのですが、その半角の空白を単語の前後に付ける式をうまく作る事が出来ません。
どうか、どなたか教えて下さい。

 ・
 ・
 キー入力 (17, 1), プロンプト="検索する単語を入力して OK を押して下さい。", モード=半角, &検索単語
  絞り込み [単語]_&検索単語, 文字比較方法=自動, 部分一致検索=含む
 ・
 ・

これは、プログラムの一部です。&検索単語 の部分を書き換えればいいのかなと思い、
試行錯誤してはみましたが、私には駄目でした・・・。

26878 Re:一括処理定義上での半角空白の表し方 うにん 2004/06/30-11:45
記事番号26876へのコメント

>  絞り込み [単語]_&検索単語, 文字比較方法=自動, 部分一致検索=含む

絞り込み [単語]{" "+&検索単語+" "}, 文字比較方法=自動, 部分一致検索=含む
じゃないでしょうか。

26879 Re:一括処理定義上での半角空白の表し方 野崎 2004/06/30-12:12
記事番号26878へのコメント
初の投稿でとても緊張しましたが、
うにんさん、うまくいきました!!
有難うございました。


 予め &検索単語1 を変数宣言しておき、

    ・
    ・
 キー入力 (17, 1), プロンプト="検索する単語の前後に半角の空白を入れて入力して OK を押して下さい。",モード=半角, &検索単語
         代入 &検索単語1=" "+&検索単語+" "
         絞り込み [問題]_&検索単語1, 文字比較方法=自動, 部分一致検索=含む
    ・
    ・

この様にしたら、大正解でした。有難うございました。

ところで、うにんさんの式に出てきた {" "+&検索単語+" "} での{ }はどのような時に付けるのですか?


26881 Re:一括処理定義上での半角空白の表し方 うにん 2004/06/30-12:36
記事番号26879へのコメント

>うにんさん、うまくいきました!!
>有難うございました。

自分で解決できたようですが、私はうまくいかない方法を教えてましたね^^;

>         代入 &検索単語1=" "+&検索単語+" "
>         絞り込み [問題]_&検索単語1, 文字比較方法=自動, 部分一致検索=含む

>この様にしたら、大正解でした。有難うございました。

>ところで、うにんさんの式に出てきた {" "+&検索単語+" "} での{ }はどのような時に付けるのですか?

_&を使う書き方は「変数に代入した比較式」の場合で、変数の中身が「値」の場合は{}をつけるのです。

" "を変数値に代入せずに直接{}で書く場合は「部分一致検索」を指定すると計算式とみなさなくなってしまうので
絞り込み [問題]{=* &検索単語 *}, 文字比較方法=自動
が正しいようです。

26883 Re:一括処理定義上での半角空白の表し方 野崎 2004/06/30-13:34
記事番号26881へのコメント
うにんさん

>_&を使う書き方は「変数に代入した比較式」の場合で、変数の中身が「値」の場合は{}をつけるのです。
>
>" "を変数値に代入せずに直接{}で書く場合は「部分一致検索」を指定すると計算式とみなさなくなってしまうので
>絞り込み [問題]{=* &検索単語 *}, 文字比較方法=自動
>が正しいようです。
>


実は * を使っての試行錯誤は昨日したところでした。
しかし、{}を使ってなかったので、これは!!と思い

>絞り込み [問題]{=* &検索単語 *}, 文字比較方法=自動

で実行してみましたが、send を含む sends 等も選択されて正しい結果がでません。
レコードの文中に send が出てくるものを選択したいです。
この形を利用して色々変形してやってみましたが出来ません。
せっかく、計算式を書いて下さったのですが・・・。



26884 Re:すいませんT_T うにん 2004/06/30-14:25
記事番号26883へのコメント
>>絞り込み [問題]{=* &検索単語 *}, 文字比較方法=自動
>
>で実行してみましたが、send を含む sends 等も選択されて正しい結果がでません。
>レコードの文中に send が出てくるものを選択したいです。
>この形を利用して色々変形してやってみましたが出来ません。

「文字列型の項目で部分一致検索をするときは、ワイルドカード(*)と比較方法を指定できます」
つまりワイルドカードを使うこと自体が部分一致検索なので、コマンドのオプションで指定しなくても
{}の中に計算式を書けなくなるようです。
(ついでながらワイルドカードを使うときは=も不要というか無いのが正しいようです。つまり
[]<*"あ" なんてのは無意味なので比較記号を指定しない)

変数の値への展開だけは行なわれるようですが、それなら{}を書かなくても_だけでいいわけで...

26885 Re:すいませんT_T 野崎 2004/06/30-15:10
記事番号26884へのコメント
いえいえ、とんでもないです。
実際、動く様になったのですから。
色々教えて頂いて有難うございました。
私自身、分かったのか分からないのか、分からない状況ですが、
使っていきながら、徐々に理解出来ていくのではないでしょうか。

でも、表形式で 絞り込み をするときの、
“値”と“比較式”の大きな違いと、
ワイルドカード自体が部分一致検索であるという事は分かりました。

又、この様な計算式作成の場面が出てきたら、
うにんさんのコメントを読みながら頑張ります。
ありがとうございました。
それから、又宜しくお願いします。
26904 【解説】比較式 佐田 守弘 2004/06/30-23:26
記事番号26885へのコメント
野崎さん
絞り込みのコマンドの記述の大筋は理解されたと思いますが、何点か
補足いたします。

●比較式の書式
 >・・・での{ }はどのような時に付けるのですか?
絞り込みや検索で比較式を指定してコマンドを書く時には、正式には
次の様な書式になります。
 【書式】<コマンド> [<項目名>]{<比較演算子><比較式>:<比較方法>}
  (例) 絞り込み [問題]{=&検索語:E}
つまり、{ }は、比較演算子、比較式、比較方法の記述を囲むために付けます。
これが正式な記述の書式です。

しかし例外としていくつかの場合に、これらの記述要素の省略ができる場合があります。
・比較演算子の省略:比較演算子が等号(=)の時には省略できます
 (例) [問題]{*" script "*}
・中かっこ{ }の省略:比較式の記述が1つの時には省略できます。
 この点について補足すると、比較式はコンマで区切って複数記述できます。
 この場合比較演算子どうしは論理積(and)の関係になります。
 「[<項目名>]{<比較演算子><比較式>:<比較方法>}」をコンマで区切って
 並べるとor関係になるのですが、これは検索条件登録のみで使えます。
 (絞り込み/検索コマンドでは記述できません。)

●比較式を変数で指定する場合
比較式を直接記述するのではなく、比較式そのものを文字列型変数に代入し、
この変数で比較式を指定する事が出来ます。この時には次の書式になります。
 【書式】[<項目名>]_&<文字列型変数名>
  (例) [問題]_&文字列
この殆どの用途は、等号での比較のケースでしょうから、変数には"script "の様な値そのものが代入されて使われる事が多いでしょう。

●値と比較式の違い
 >“値”と“比較式”の大きな違いと、
実は大きな違いはありません。混乱させるような言い方になってしまいますが、全く同じ者である時もあります。
しかしより正しく言えば、値だけで比較式になり得るという方が良いでしょう。

@比較演算子を省略した場合
まず先に述べた様に、等号の比較演算子は省略できます。すると、{ }の中は
 [問題]{英語}
の様に比較値だけになってしまいます。でもこれで立派な比較式です。
(本当は引用符を書くのですが、省略できる時もあります)

A会話処理での値と比較式の違い
前のバージョンまではこの区別はありませんでした。桐ver.9から登場したと思います。
それまでは桐ver.9で言う「比較式」での指定のみでした。
等しいものを絞り込む時には値だけを比較式として指定しました。
それ以外の不等号を使う時や、部分一致を指定する時にはワイルドカードを付けました。
おそらくその使い分けが分りにくいので、値と比較式のメニューを作ったのではないかと思います。

佐田守弘(KS-00119)
26910 Re:【解説】比較式 野崎 2004/07/01-10:17
記事番号26904へのコメント
佐田さん 

丁寧な説明有難うございました。

でも、正直まだ内容を完全に理解できてはいないです。
それでも、佐田さんの説明が無駄にならないように、
この書式が出てくる度に確認しながら、
又、余裕があれば、別解も考えながら記述してみます。

とりあえずは、基本が大事ですから、まずは正攻法で、
そして慣れてきたら、例外や省略なぞを利用してみようと思います。
ありがとうございました。

戻る