みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。設定の仕方で躓いてしまったので、ご教授下さい。
伝票を作成していて、「日付_数字」フィールドと「不良の有無」フィールドを作り管理をしています。
やりたいこと>
「日付_数字」フィールド ・・・「不良の有無」フィールド
20230927_01 ・・・不良
20230927_02 ・・・不良
20230927_03 ・・・不良
20230927_04 ・・・不良
20230928_01 ・・・良品
20230928_02 ・・・良品
20230928_04 ・・・良品
躓いていること>
「日付_数字」フィールドの数字部分が_03だった場合に、同じ日付のデータすべての「不良の有無」フィールドに不良と表示させたいです。
拙い説明で申し訳ありませんが、宜しくお願い致します。
日付だけを取り出したフィールドを作り、自己リレーションをはります。
_数字 を取り出したフィールドを別に作り、
ValueCount ( FilterValues ( List ( 自己リレーション::数字 ; "_03" ) )
で判別できます。
Offline
別法としては
Case ( ExecuteSQL ( "SELECT COUNT(*) FROM \"テーブル名\" WHERE \"日付_数字\"=?" ; "" ; "" ; Left ( 日付_数字 ; 9 ) & "03" ) = "" ; "良品" ; "不良" )
でいけるかな。
_03のレコードがいつ入るかわからないので計算結果を非保存にしないとだめだから、いけないか...
_03
のレコードが最初に作られていれば、
他のレコードに自動入力できますが、
後から作られると既存のレコードの書き換えはできませんよね。
スクリプトで書き換えないとだめでしょう。
Offline
Shin様
回答ありがとうございます。日付で自己リレーションをはり、数字のフィールドを作成して。。。
と設定したのですが、スクリプトの計算式の指定のところで「関数中の引数が足りません。」と出てしまいました。
あきらかに、私の作り方が悪いのですが。。。よくわからなくて。。。
申し訳ありませんが、もう少し教えていただけると嬉しいです。(ほんとにごめんなさい)
himadanee様
回答ありがとうございます。Case関数は、私も初めに設定してみたのですが、できませんでした。。。
そもそもの時点で、私が設定した式よりもhimadanee様の式の方が立派で。。。こうゆう式じゃないとダメだったのか!!と冷や汗ものでした(汗)
ほんと、勉強になります。
チポ様
回答ありがとうございます。
_03のレコードが先に作られるのなら、なんてありがたかったことでしょう(涙)
スクリプトの設定も手探りの初心者には、どれもこれもが難題すぎて。
ヒントやら回答やらを皆様からいただけるので、大変助かります。
既存のレコードに実行したいのですか?
それとも、
新規レコードに対応?
それとも両方?
既存と新規では方法がちょっと異なりますね。
Offline
最初のShinさんの回答もですが、スクリプトなしでやると必然的に非保存になってしまうので、見えるだけでいいのか検索するのかによっても違ってくるかな。
スクリプトならonRecordCommitのトリガで関連するレコードを設定しなおし、でいいかな。
関連すると言ってもリレーションを使わないで検索でもいいわけですが、リレーションするなら日付だけ分けたフィールドが必要になります。
最初から分けた状態で入力したりしないんでしょうか。
FMで入力しないで連結した状態のデータが他からインポートされるとかでしょうか。
チポ様
既存と新規、両方に対応させたいです。1日置きに、不良の有無のチェックをしているのですが、そのタイミングですでに
「日付_数字」フィールド に他の人が入力していたり、自分で新規に入力するので、できれば、「日付_数字」フィールド に
入力された時点で、不良の有無フィールドに結果が入るように設定したいと考えています。
himadanee様
不良の有無フィールドでは検索をしない予定なので、見えるだけで大丈夫です。(その後、条件付き書式で不良のものに関しては色付けを
しようと思っています)
「日付_数字」フィールドは、「日付」と「数字」のフィールドに分けて作成した方が良さそうなので、作り直すことにしました。。。
スクリプトの設定が難しくて。。。涙がでてきそうです。
いずれもスクリプトですが、その考え方
既存のレコードには
_03のレコードを探して、
それが「不良」なら、同じ日付のレコードに「不良」を入力
これは一回実行すれば後で使うことはありませんね。
新規レコードには
_03かつ「不良」なら、同じ日付のレコードに「不良」を入力
このスクリプトを
「日付_数字」フィールドと「不良の有無」フィールド
のスクリプトトリガ
OnObjectExit
で実行させます。
同じ日付のレコードはポータルで表示できますから、
ポータル内で作業できますね。
Offline
>_03のレコードを探して、
>それが「不良」なら
処理方法としてはあんまり違わないかもですが、最初の発言を見ると
_03自体が「不良」という意味なのでは?
himadaneeさん
ゴメン、言ってることが理解できません。
> _03自体が「不良」という意味
自体=レコード
とすれば同じことですよね?
Offline
_03のレコードは必ず不良なので、
>それが「不良」なら
は条件として不要だろうということです。
皆様ありがとうございました!!
Shin様の ValueCount ( FilterValues ( List ( 自己リレーション::数字 ; "_03" ) ) の式を改めて設定したところ
希望通りのことができました!!
とても嬉しいです。
いろいろと親切に回答いただきありがとうございました。
そういうことなのか?!
_03のレコードができた時点でその日付のレコードはすべて不良にする
ということ?
ならば、私の
「不良」なら
を考えなくていいですね。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 592.19 KiB (Peak: 608.73 KiB) ]