過去の桐井戸端BBS (桐ver.9)
21453 ある項目の中に別の項目の文字列が含まれているかどうか判断をしたい 緒方 2003/07/17-23:12
いつも拝見させていただいています
項目計算式で教えて下さい
項目[a] [b]     [c]
あい あいうえお  ok
いえお  あいうえお  ok
..
か    あいうえお no
項目[b]のデータに項目[a]のデータが含まれる場合は項目[c]に計算式でok,noとでるようにする事ができるのでしょうか
「あい」と連続する場合は#部分一致でできるのですが、「いえお」のように
文字が飛ぶとうまくいきません。知恵をお貸し下さい
21456 Re:項目計算式で教えて下さい 宮城 2003/07/18-00:53
記事番号21453へのコメント
緒方さん、こんにちは。

残念ながら無理でしょう。
どういう背景でこういうニーズがでてくるのか
ちょっと想像できませんが、何文字あるかもわからない[a]を一文字ずつ調べるしかないように思います。

そうなると一括処理でも組まないと・・・。

どういう背景でこういうニーズがでてくるのかという点にはなんとなく興味をひかれますが。


21457 Re:項目計算式で教えて下さい 悲しげ 2003/07/18-01:17
記事番号21453へのコメント
つまり項目[b]の項目値が「あいうえお」だとして、項目[a]の値に
「あ」を含むか、または「い」を含むか、・・・、または「お」を
含む場合は項目[c]に「OK」を、そうでなければ[NO]を、と云うことですね。
これは項目計算式では無理だと思います。一括処理の出番でしょう。
以下一例。

表 "なんとか.tbl"
繰り返し(.not #EOF)
 &件数=1
 繰り返し
  &STR=#部分列([a],&件数,1)
  if(#文字位置([b],&STR)>0)
   行訂正 [c]="OK"
   繰り返し中止
  else if(&STR="")
   行訂正 [c]="NO"
   繰り返し中止
  end
  &件数=&件数+1
 繰り返し終了
 ジャンプ 行番号=+1
繰り返し終了

ps
ある熟語(二文字以上)が存在すれば・・・ではありませんよね?

ps2
このBBSにデータを例示するに際しては、全角スペースを使うようにしましょう。

21458 Re:項目計算式で教えて下さい 緒方 2003/07/18-07:16
記事番号21453へのコメント
宮城さん、悲しげさんありがとうございました
うまくいきました。これで次に進めます
なぜこのようなことを質問したかといいますと国の助成金がいろいろありまして
一つ一つの助成金に色々な条件があり重なる部分も結構あります。
それである条件に合致した場合はこの助成金はok、noということにしたかったわけです
悲しげさん一括処理ありがとうございました。半角スペースの件は今後注意して
見やすいようにします。これで悶々とした日々から解放されます
21459 Re:項目計算式で教えて下さい 緒方 2003/07/18-08:45
記事番号21457へのコメント
悲しげさんすみませんあまりのうれしさにすぐレスを出してしまい良く理解していませんでした。
{「あ」を含むか、または「い」を含むか、・・・、または「お」を含む場合は項目[c]に「OK」を、
そうでなければ[NO]を、と云うことですね。}の部分は又はではなく「あ」かつ「い」かつ「お」です。
かさねがさねすみません

21460 余談 うにん 2003/07/18-10:31
記事番号21456へのコメント
>残念ながら無理でしょう。どういう背景でこういうニーズがでてくるのか
>ちょっと想像できませんが、何文字あるかもわからない[a]を一文字ずつ
>調べるしかないように思います。
>
>そうなると一括処理でも組まないと・・・。

余談ですが、DBProだと繰り返し関数があるので、こんな計算式でできます。
負けてるぞ〜>K3
$I:=1,#WHILE($I<=#文字数([A]) and #文字列位置([B], #部分文字列([A],$I,1))>0, $I := $I+1),#COND(($I > #文字数([A]), 'OK'), ('NO'))
21474 Re:項目計算式で教えて下さい 悲しげ 2003/07/18-17:55
記事番号21459へのコメント
「あ」「い」「う」・・・だと、より訳が判らなくなってきそうですから
差し支えない範囲で具体的なデータを(なるべく多く)例示して下さい。

21476 Re:項目計算式で教えて下さい 緒方 2003/07/18-20:11
記事番号21474へのコメント
悲しげさん言葉に甘えさせていただき具体的に書かせていただきます
以下のような助成金と該当するための条件があります
1.新規成長分野雇用特別奨励金
(該当するための条件)いずれにも該当すること
(1)新規成長分野事業を行っている事業主である      −あ
(2)リストラされた30歳以上60歳未満の人を雇用する     −い
(3)常用労働者として雇い入れる       −う
(4)6ヶ月以内に事業主都合の解雇をしていない       −え
(5)雇入れ3ヶ月後の人数が増えていること       −お
2.緊急雇用創出特別奨励金
(該当するための条件)いずれにも該当すること
(1)リストラされた45歳以上60歳未満の人を雇用する      −か
(2)常用労働者として雇い入れる       −う
(3)6ヶ月以内に事業主都合の解雇をしていない       −え
3.特定就職困難者雇用開発助成金
(該当するための条件)いずれにも該当すること
(1)雇用保険の適用事業主である       −き
(2)60歳以上又は母子家庭又は障害者の人を雇用する       −く
(3)6ヶ月以内に事業主都合の解雇をしていない       −え
後40近い助成金と該当するための条件がそれぞれにあります
全条件名から任意に選ぶと該当する助成金が絞り込まれて表示される
このようなことができないかと思い試行錯誤しているところです
あいうえおは条件名のつもりですが条件が多いので何かに変える
つもりです。「あいうえお」が且つなのはいずれにも該当するためです
上手く表現できずお許し下さい

21484 Re:項目計算式で教えて下さい 悲しげ 2003/07/18-23:28
記事番号21476へのコメント
どうやら、条件に「あいうえおかきくけこ・・・」の記号を付けて
いると云うことみたいですね。(違いますか?)

で、私なら「あいう・・・」よりは、もう少し視覚的に判りやすい
略称を使いたいところですが、それはさておき(^^;)

う〜ん、私ならひとつの項目値から判断させるよりも、複数の項目に分解すると云うか、
例えば[あ],[い],[う],[え],・・・・の項目
を設けてそれにチェックを入れる(あるいは該当あれば1を入力、
そうでなければ未定義または0とする)ようにしてから判断させる
方法を検討するかもしれません。
例えば、
  [い]+[う]+[え]=3 ならばどうしたとか
  [あ]+[う]+[お]=3 ならばこうしたとか
  [あ]+[い]=0 で [う]+[え]>1 ならば・・・
  etc

もっとも、緒方さんの例示では、その後どうするのかを読み取るこ
ともできませんけど。(^^;)

21486 Re:項目計算式で教えて下さい うにん 2003/07/18-23:48
記事番号21484へのコメント
>で、私なら「あいう・・・」よりは、もう少し視覚的に判りやすい
>略称を使いたいところですが、それはさておき(^^;)

そうですね。まあ、「あいう」はあくまで説明のために抽象化したんでしょうけど。

>う〜ん、私ならひとつの項目値から判断させるよりも、複数の項目
>に分解すると云うか、例えば[あ],[い],[う],[え],・・・・の項目
>を設けてそれにチェックを入れる(あるいは該当あれば1を入力、
>そうでなければ未定義または0とする)ようにしてから判断させる
>方法を検討するかもしれません。

条件をまんま項目名にして(64文字が限度ですが)こんな表を作り、

項目名 データ型
助成金 文字列
新規成長分野事業を行っている事業主 整数
リストラされた30歳以上60歳未満の人を雇用 整数
常用労働者として雇い入れる 整数
6ヶ月以内に事業主都合の解雇をしていない 整数

以下略。でこんな風に入力するわけですね。(0でなく未定義も可)

新規成長分野雇用特別奨励金  0 0 0
緊急雇用創出特別奨励金     0 0 1 1 0 1 0 0

で、表の枠組みを書き出しして、そっちには調べたい条件を入力します。

ケース1 1 1 1 1 1 1 1
ケース2 0 1 1 0 1 0 0

で、この2つの表で結合表を定義して、絞込み条件1の各条件の行にそれぞれ
≧["助成金.tbl".新規成長分野事業を行っている事業主]
のように入れると、ケースごとに満たしている奨励金がリストアップされます。
条件の項目は整数でなく文字列にして◎を入れたりしてもできると思います。

21491 Re:項目計算式で教えて下さい 緒方 2003/07/20-10:36
記事番号21486へのコメント
悲しげさん、うにんさん返事が遅くなりました
アドバイス通りにやってみているんですが結合表が今まで使ったことがないものですか
らなかなか理解できず思うような結果が出ません。でもこうすれば出来ると解っただけ
でも努力のしがいがあります。本当にありがとうございます

戻る