みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
himadanee様、
あれ? 確かに改行で部分一致を「重複」として拾うことができました。
「間違いない」と後押ししていただいて、あれこれ迷う必要がなく、助かりました。
ありがとうございました。
いつもお世話になっています。
完全にテキストが一致するだけでなく、一部のテキストだけが一致するフィールドも「重複」として判定したいと考えています。
具体的に
1 みかん
2 りんご
3 ぶどう なし
4 りんご
5 なし
6 かき
で、自己リレーションを利用して、現在は2と4だけが「重複」と判定されていますが、3と5も「重複」と判定したいのです。
このようなことはできますか?
ポータルのように、改行すればよいのかとおもいましたが、間違っていそうです。
mac ventura、Ver.19です。 よろしくお願いします。
himadaneeさんのおっしゃるとおり、無理に抽象化していると思います・・・
確かにBは予定表で、Aは変更履歴です。
ただ、ここでの「重複」はBに既に入力されていれば、ということではなく、同じ予定が他の日付の予定が「重複」していればということなんです。
1月1日の予定が「出張」だとして、例えば2月1日の予定をファイルAから「休暇」から「出張」にしたら、それを「重複」として認識したいのです。
また、「変更の日付」は予定の日付です。
言葉足らずで済みません。
ファイルAには、予定の日付を入力し、変更の予定を入力しています。
上の例では、2月1日とa'に入力し、aに「出張」と入力します。
するとファイルBの2月1日を含むレコードのb'’に「出張」とlookupされたデータが入力されて、b'''には「出張」と表示されます。
ファイルBには1年分の日付がb'にあらかじめ入力されているレコードが365個あり、そこにファイルAでの新規レコードのaが(b'をリレーションとして)bに上書きされるイメージです。
わかりにくくて済みません・・・
Bは普通の予定表、Aはそれの変更履歴、ということでは?
Bには直接入力せず、Aに仮に入力する、同じ日の予定がBに既に入力されていれば「重複」ということのような感じに見えます。>Aはこの予定について、変更が生じる度に、その変更の日付をa'に、新たな予定をaに入力しています。
ここがちょっとわからない。「変更の日付」は予定の日付なのか、予定を変更した日付なのか?
「予定の変更」という場合、日付を変える場合と予定の内容を変える場合があると思いますが、、、両方変えてしまったら元の予定とは全く関係なくなるので単に新規の入力ということになりますし。
お返事ありがとうございます。
説明不足で済みません。
Bは一年間の予定表のようなもので、b'には一年分の日付が、bにはその日の予定が入っています。
Aはこの予定について、変更が生じる度に、その変更の日付をa'に、新たな予定をaに入力しています。
そしてAとBのファイルをa'とb'のフィールドでリレーションしています。
前回は説明を簡略化するために省略していましたが、Bにはb'''という計算フィールドがあり、ここにlookup関数でaのデータをひっぱってきています。さらにもう一つ計算フィールドb''''を作って、b'''にデータがあればそれを表示し、なければbを表示するようにしています。Aファイルの変更予定があればそれを表示し、なければBファイルにあった元々の予定を表示するイメージです。最終的にはこれを1週間の予定としてカレンダー表示しています。
また、重複については、元の予定と新しい予定で同じものを入れたくない場合があるので、ひとまずはBファイルで管理しています。
いまのところ上記で説明した部分まではなんとか構築できましたが、最初の説明で申したように、Bファイルを開かず、Aファイルにてaおよびa'に変更を入力した時点で、Bのb'で重複があれば(重複があったばあいは「重複」と返すようにしています)カスタムダイアログを表示したいのです。aとa'の入力が終わった段階で、【a'の日付をコピーし、ファイルBの同じ日付のレコードを検索し、もしb''に「重複」と返されていればダイアログを表示する】のようなイメージでスクリプトを書けばいいのかと想像していますが、その書き方が分からないのです。
いつも参考にさせていただいています。
カスタムダイアログ表示について教えて下さい。
現在、AとBというファイルがあり、
ファイルAに
テキストフィールドa
日付フィールドa'
ファイルBに
テキストフィールドb
日付フィールドb'
重複判定フィールドb''
があります。
AとBをリレーションでつなぎ、Aにおいて、a'を指定し、aにデータ入力すると、Bにおける該当のb'を含むレコードのbに反映され、かつbとb'を条件として重複がないか(自己リレーションで)b''で判定する、ということを実行しています。Bには1年分の日付が入っており、そこにAでのデータを重複がないように書き込むイメージでしょうか。
やりたいことは、Aでa'入力時(あるいは入力後?)に、もしBのb''に「重複」があればカスタムダイアログを表示させたいのです。
具体的に
1 「カスタムダイアログを表示」を含むスクリプトの書き方 (Bのb''に「重複」があれば、という条件でのみ表示させたいのです)
2 上記のスクリプトのトリガ設定方法 (a'入力後そのフィールドを離れるときだからOnObjectExitかなと思っていますが・・) です。
なお、重複があってもそのまま入力せざるを得ない状況があり、ダイアログ表示は入力者に重複があることを知らせることだけが目的です。
まどろこっしい説明で申し訳ありませんが、アドバイスをいただけたらと思います。
Shin様、
結局、
> 「非保存」設定された計算フィールドの結果はポータル内に表示できなかったと思います。
非保存のフィールドは、リレーション先のキーにできないだけです。ポータルの中の表示は可能です。
のご助言から、非保存フィールドがリレーションキーになっていたことに気付きました。この部分だけテキストタイプのフィールドに変え、索引設定して期待していた結果をポータル表示できました。
ありがとうございました。
バージョン19.6.3
Mac Ventura で利用しています。
現在、あるテーブルの中に、計算フィールドAを作成し、リレーション済みの別のファイルのあるテーブルのテキストフィールドBから、Lookup関数を利用してデータを取得しています。
フィールドBには追加・変更が常時生じるため、Aにもそれに追従して追加・変更させたいのです。
ここまでなら、「索引設定」で「非保存」にすれば希望は叶うのですが、追加・変更の結果を即時別テーブルでポータル表示させたいのです。
私のつたない理解では「非保存」設定された計算フィールドの結果はポータル内に表示できなかったと思います。
となると、「非保存」設定を解除し、「索引」を設定するしかないと想像するのですが、こうすると、Bの追加・変更が即時Aに反映されません。
「索引設定」された計算フィールドの結果を、即時再計算させるにはどのようにしたらよいのでしょうか? Evaluate関数を使うのかな、とも思いこちらの過去ログも見てみましたが、私の理解が足りず、よく分かっていません。
お知恵を貸して下さい。
チポ様、
ありがとうございます。少し落ち着いてからご教授頂いた方法を試してみたいと思います。またご報告させて頂きます。
Shin様、himadanee様、ありがとうございます。
避けたいことは、一つ目は、himadanee様ご指摘の通り、同じ日に同じクラスで同じ教科を2回やることはないので、そのような変更が生じた際、ダイアログで警告したいのです。
二つ目もご指摘の通り、同じ日の同じ時間に別クラスを担当することはないので、そのような変更発生時にダイアログ警告を出したいのです。
今現在、縦の重複(同日、同クラスに同じ授業)も、横の重複(同日、別クラスに同じ担当者)も、どちらも生じた際には、計算フィールド(自己リレーションからのユニークな値の相違を判定させて)それぞれ「縦重複」、「横重複」というテキストを返させて、そのテキストがある場合に警告ダイアログを出させています。
ところがこの方法では、新しいデータを入力させたときは良いのですが、既にあるデータに変更を加えて、上記2つのいずれかの条件になったとき、ダイアログ警告が出ません。
ダイアログを出すスクリプトは、
If [縦重複判定フィールド="縦重複"]
カスタムダイアログを表示
End If
です。ひょっとしてこの書き方が間違っているのでしょうか?ちなみにこのままでは、より新しいデータとの重複はダイアログが出ますが、古いデータに変更発生時には、"縦重複"が返されないので、当然ダイアログが出ません。
Shin様、
ありがとうございます。
以前、https://fm-aid.com/bbs2/viewtopic.php?id=14221 で、皆さまのお知恵を貸していただいた件の延長です。
前回は、チポ様の方法で上手くいきました。
三連続するデータ判定の際、himadanee様に指摘頂いたことですが、「三連続目のデータがかならずしも最新ではない」場合にも判定結果を出す必要があり、これにつきましては皆さまのおかげで上手くいきました。
今回も前回同様、過去データに変更が生じた場合にも、それがそれ以降のデータと重複が生じた際に、ダイアログメッセージを出したいというのが大まかな流れです。
例えば次の例です。
4月20日 Aクラス 1限目 国語 木下・鈴木
4月20日 Aクラス 2限目 数学 山田
4月20日 Aクラス 3限目 社会 西山・山田
において、1限目が社会に変更になった際に、判定し、ダイアログを出したいのです。
もうひとつ。
4月20日 Aクラス 1限目 国語 木下・鈴木
4月20日 Aクラス 2限目 数学 山田
4月20日 Aクラス 3限目 社会 西山・山田
4月20日 Bクラス 1限目 数学 山田
4月20日 Bクラス 2限目 理科 田中
4月20日 Bクラス 3限目 数学 近藤
において、Bクラスの1限目が「国語 木下・鈴木」になった際にも、判定し、ダイアログを出したいのです。
上記それぞれ2回目のデータ(3限目社会やBクラス1限目国語)については、重複が判定できています。(自己リレーションです)
ですが、1回目のデータ(1限目社会やAクラス1限目国語)変更の入力時に、それがより新しいデータと重複するか、判定できず、よってダイアログも出せていません。
このようなことは可能なのでしょうか?
Shin様に教わった、ポータルおよびList関数では上手くいきそうにないもので・・・
すみません、お知恵を拝借できれば助かります。
FM Ver.19
Mac Ventura下での利用です。
重複するレコードが入力された際、重複した新しいデータは、自己リレーションを利用して判別することができています。
このとき、重複していた元の過去データも判別したいのですが、可能でしょうか?
例:
レコード番号 納品日 項目
1 5月5日 りんご
2 5月5日 バナナ
3 5月5日 ぶどう
4 5月5日 バナナ
5 5月5日 みかん
4のバナナは判別できていて、2のバナナも判別したいです。
過去ログに同様の質問があったならすみません。一応確認したのですが・・・
チポ様、
ありがとうございます。上手くいきそうです。お助けいただき、ありがとうございました。
チポ様、
もう一つ助けてください。
リレーション
日付 = 日付
and
担当者 = 担当者
and
時限 = 時限照合用
これで、三回連続した、最後のレコードの
Countが3になります。
の、最後、Countが3になる、の部分の計算式が分かりません。知識不足ですみません。どのような式になりますでしょうか?
チポ様、
ありがとうございます。その部分はできました。引き続きチャレンジしてみます。
チポ様、
チポ様のやり方をためてしているのですが、
さらに、時限照合用に計算フィールド・繰り返し3回を作り
時限
時限+1
時限+2
となるようにします。
の部分が分かりません。計算の繰り返しフィールドで、「時限+1」「時限+2」のように、個別の計算式を定義することができるのでしょうか?
チポ様 Shin様
ありがとうございます。少々お時間をいただいて、挑戦してみます。
結果はまた報告させていただきます。
重ねてありがとうございました。
himadanee様、
おっしゃる通りです。言葉足らず、説明不足ですみません。
必ずしも順番通りの入力ではなく、「同じ担当者が3つの講座を連続して持つという条件」が揃ったことを判定したいのです。
himadanee様、
お付き合いいただき、ありがとうございます。うーん、私の理解が浅いようで、上手くいきません。
関係するフィールドは以下です。
日付(日付)
クラス(クラス)
限(数字)
講座名(テキスト)
担当者(テキスト)
担当者_改行(計算)→ 担当者が複数名の時に「担当者」フィールドを改行区切り
ここに
限_1(計算)→ 限-1
限_2(計算)→ 限-2
を索引設定済のフィールドとして作成しました。
自己参照のリレーションで
日付と日付、
担当者_改行、
限と限_1、そして限と限_2、
をつなげています。
三連続を判定するフィールドとして、
判定(計算)→
とここが分かりません。
リレーションの構成がまちがっているのでしょうか?
おそらくは、おっしゃっている、「関連レコードの有無」の理解が不足しているのでしょうが・・・
すみません、ご教示いただければ助かります。
himadanee様 ありがとうございます。
「2つのリレーションで両方とも同じ担当者がいれば」の部分があまり分かっていません。
連続を判別するフィールドの計算式?を教えていただければ幸いです。
Mac13.3.1 FP Ver.19での使用条件です。
講座の担当者の年間データ作成で困っています。
週5日、4クラス、1限目~6限まで講座があります。
ある一日の講座の担当者を割り振る際、3限連続する場合にメッセージを出させたいです。
1つの講座の担当者は複数名になることがあり、
4月20日 Aクラス 1限目 木下・鈴木
4月20日 Aクラス 2限目 山田
4月20日 Aクラス 3限目 西山・山田
中略
4月20日 Bクラス 1限目 鈴木・山田
4月20日 Bクラス 2限目
4月20日 Bクラス 3限目
でBクラス1限目に「山田」を入力した際にメッセージを出させるイメージです。
自己参照で、「日付」と改行処理した「担当者」をリレーションキーとして使い、重複データを探すのかと考えましたが上手くいきません。
お知恵を拝借できればと思います。よろしくお願いします。
Pages: 1
[ Generated in 0.014 seconds, 6 queries executed - Memory usage: 690.22 KiB (Peak: 727.38 KiB) ]