みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
メールを受信出来るプラグインを使用し、メールを受信(レコードが追加)されたタイミングで正規表現で抜き出したテキストを
計算フィールドではなく、テキストフィールドに自動で取得したいという質問をした際に、こちらでの掲示板で
Case ( IsEmpty ( B ) ; A )を教えて頂きました。
参考にさせていただきまして実際試したのは、
Case ( not IsEmpty ( B ) ; A )にしまして、
Bのフィールドに値が入ったら、Aに計算結果を戻す
というものです。
Bフィールドもメールで受信されるものになります。
実行しました所、自動で取得したいフィールドが3つあり、一番最後のフィールドだけは、自動で取得出来るのですが、
最初に設置した、2つのフィールドの取得が出来ないのです。
3つ目のフィールドを削除すると、2つ目のフィールドのみ自動取得出来ます。
計算フィールドの非保存にすると全て取得出来ます。
計算値の自動取得のトリガーといいますか、ルールーの様なものがわかりません。
お分かりでした教えてください。宜しくお願い致します。
Case ( not IsEmpty ( B ) ; A )にしまして、
Bのフィールドに値が入ったら、Aに計算結果を戻す
ちょっと違いますよ。その式は、
Bのフィールドに値が入っていたら、A(のフィールドの値)を計算結果として戻す
です。どのフィールドに戻るかは、計算式を設定する場所によります。
計算フィールドの計算順番は、基本的にはフィールドを定義した順だと思います。
計算式で他のフィールドを参照している場合は、そのフィールドの値が変わった時に再計算されます。
計算値自動入力で計算が循環していると、全部空になったりしたような記憶が。
himadaneeさんありがとうございます。
すみません。まちがってました。
Case ( not IsEmpty ( B ) ; A )にしまして、
Bのフィールドに値が入ったら、そのフィールドにAの計算結果を戻す
でした。失礼いたしました。
自動計算が複数ある場合には、自動計算では取得できないということなのでしょうか。
やはり、この場合一度非保存の計算式で取得し、全置換でフィールドに格納するしかないのでしょうか。
Case ( not IsEmpty ( B ) ; A )にしまして、
Bのフィールドに値が入ったら、Aに計算結果を戻すちょっと違いますよ。その式は、
Bのフィールドに値が入っていたら、A(のフィールドの値)を計算結果として戻す
です。どのフィールドに戻るかは、計算式を設定する場所によります。計算フィールドの計算順番は、基本的にはフィールドを定義した順だと思います。
計算式で他のフィールドを参照している場合は、そのフィールドの値が変わった時に再計算されます。計算値自動入力で計算が循環していると、全部空になったりしたような記憶が。
>Bのフィールドに値が入ったら、そのフィールドにAの計算結果を戻す
そのフィールドとは?Bじゃないですよね?これ以前に何もないのでBとしか解釈できませんが
空欄かAと同じ値にしかならないので、ちょっと意味が解りません。
具体的な計算式がないので「自動計算が複数ある場合には、自動計算では取得できない」かどうか判断できません。同じ式を3つのフィールドに使ったわけではないですよね?
Case ( not IsEmpty ( B ) ; A )
この式は、フィールドはAとBの2つしか使ってませんので、その2つが変更されたとき(その前に、レコードが作成されたときも変更とみなされる)にしか計算されません。
「プラグインを使用し」ですから、そのプラグインの動作がどういうものかも関係します。
レコードのインポート時には計算するかどうかフィールドごとに指定可能ですから、計算しないこともあり得ます。
himadaneeさん
有難うございます。
Case ( not IsEmpty ( name_戻り値 ) ; iill_rxGetMatchGroups( Mail::name_target ))
上記の計算を対象のフィールドに自動計算値でいれていました。
メールを受信してレコードが増えると、本文のテキストから自動計算値で「name_戻り値」が入ります。
対象のフィールドは、さらにname_戻り値にはいったら、 iill_rxGetMatchGroups( Mail::name_target )の
計算結果を出したいのですが。
これと同じフィールドが
Case ( not IsEmpty ( mail_戻り値 ) ; iill_rxGetMatchGroups( Mail::mail_target ))
Case ( not IsEmpty ( address_戻り値 ) ; iill_rxGetMatchGroups( Mail::address_target ))
と3つあります。
それぞれ_戻り値の値は自動計算値で入りますが、このフィールドの値だけが、
一番下のフィールドだけにしか値が入りません。
3つの場合
Case ( not IsEmpty ( name_戻り値 ) ; iill_rxGetMatchGroups( Mail::name_target )) ←入らない
Case ( not IsEmpty ( mail_戻り値 ) ; iill_rxGetMatchGroups( Mail::mail_target )) ←入らない
Case ( not IsEmpty ( address_戻り値 ) ; iill_rxGetMatchGroups( Mail::address_target )) ←入る
2つの場合
Case ( not IsEmpty ( name_戻り値 ) ; iill_rxGetMatchGroups( Mail::name_target )) ←入らない
Case ( not IsEmpty ( mail_戻り値 ) ; iill_rxGetMatchGroups( Mail::mail_target )) ←入る
という具合に一番最後の計算値のみ値がでます。
すみませんが何か分かれば、お願いします。
>Bのフィールドに値が入ったら、そのフィールドにAの計算結果を戻す
そのフィールドとは?Bじゃないですよね?これ以前に何もないのでBとしか解釈できませんが
空欄かAと同じ値にしかならないので、ちょっと意味が解りません。具体的な計算式がないので「自動計算が複数ある場合には、自動計算では取得できない」かどうか判断できません。同じ式を3つのフィールドに使ったわけではないですよね?
Case ( not IsEmpty ( B ) ; A )
この式は、フィールドはAとBの2つしか使ってませんので、その2つが変更されたとき(その前に、レコードが作成されたときも変更とみなされる)にしか計算されません。「プラグインを使用し」ですから、そのプラグインの動作がどういうものかも関係します。
レコードのインポート時には計算するかどうかフィールドごとに指定可能ですから、計算しないこともあり得ます。
Case ( not IsEmpty ( name_戻り値 ) ; iill_rxGetMatchGroups( Mail::name_target ))
上記の計算を対象のフィールドに自動計算値でいれていました。
最初に書いてる式と全然違うじゃないですか...
Case ( not IsEmpty ( B ) ; A )にしまして、
Bのフィールドに値が入ったら、Aに計算結果を戻す
Bがフィールドなので当然Aもフィールド名の仮称かと思ってましたが...
これはプラグインの関数なので、プラグインの説明書を見ないと、どういう動作をするかは何とも言えません。
設定しているテーブルと関数で参照しているテーブルも別物のようですが、リレーションには問題ないんでしょうね。(1つは取得できるというんで)
ぐぐってみると、ここに説明があります。
https://manual-mailmakerpop.joy-h.com/s … tchgroups/
「iill_rxRegexMatch( Regex ; source ) を実行後、マッチした文字列の指定グループの値を返します。」と書いてありますが、それはどこでやってますか?
使ってる正規表現は?
Mail::~の各フィールドに入っている値は?
himadaneeさん 有難うございます。
>設定しているテーブルと関数で参照しているテーブルも別物のようですが、リレーションには問題ないんでしょうね。(1つは取得できるというんで)
同テーブル内になってましたですのでMail: はいらないですね
もともとあったスクリプトの計算式をそのままフィールドに使用してので、すみませんでした。
>Mail::~の各フィールドに入っている値は?
name
mail
address
です。
>どこでやってますか?
テーブル Mail です
>使ってる正規表現は?
それぞれ
\[ name\ ]\s?(?<name>.*?)\s
\[ mail\ ]\s?(?<mail>.*?)\s
\[ address\ ]\s?(?<address>.*?)\s
です。
Case ( not IsEmpty ( name_戻り値 ) ; iill_rxGetMatchGroups( Mail::name_target ))
上記の計算を対象のフィールドに自動計算値でいれていました。最初に書いてる式と全然違うじゃないですか...
Case ( not IsEmpty ( B ) ; A )にしまして、
Bのフィールドに値が入ったら、Aに計算結果を戻すBがフィールドなので当然Aもフィールド名の仮称かと思ってましたが...
これはプラグインの関数なので、プラグインの説明書を見ないと、どういう動作をするかは何とも言えません。
設定しているテーブルと関数で参照しているテーブルも別物のようですが、リレーションには問題ないんでしょうね。(1つは取得できるというんで)
ぐぐってみると、ここに説明があります。
https://manual-mailmakerpop.joy-h.com/s … tchgroups/
「iill_rxRegexMatch( Regex ; source ) を実行後、マッチした文字列の指定グループの値を返します。」と書いてありますが、それはどこでやってますか?
使ってる正規表現は?
Mail::~の各フィールドに入っている値は?
せっかく書いてもらいましたが、このプラグインは有料ソフトなので、そっちのサポートで質問した方がよさそうです。
https://manual-mailmakerpop.joy-h.com/s … tchgroups/
の「例」が間違ってるように見えますね。(グループ名がつけられてない)
「どこ」というのはスクリプトか別のフィールドかあるいはそれ以外か、という話だったんですが
一つ言えることは、「「iill_rxRegexMatch( Regex ; source ) を実行後、マッチした文字列の指定グループの値を返します。」」なので、iill_rxGetMatchGroupsを実行する前に必ずiill_rxRegexMatch( Regex ; source ) が必要ということです。
フィールド計算式にiill_rxGetMatchGroupsを使うなら、Matchもそこに入れた方が確実なのでは、ということ(Matchの結果がいつまで保存されてるかは不明)
himadaneeさん
いろいろ教えて頂き有難うございます。
質問してみます。
せっかく書いてもらいましたが、このプラグインは有料ソフトなので、そっちのサポートで質問した方がよさそうです。
https://manual-mailmakerpop.joy-h.com/s … tchgroups/
の「例」が間違ってるように見えますね。(グループ名がつけられてない)「どこ」というのはスクリプトか別のフィールドかあるいはそれ以外か、という話だったんですが
一つ言えることは、「「iill_rxRegexMatch( Regex ; source ) を実行後、マッチした文字列の指定グループの値を返します。」」なので、iill_rxGetMatchGroupsを実行する前に必ずiill_rxRegexMatch( Regex ; source ) が必要ということです。
フィールド計算式にiill_rxGetMatchGroupsを使うなら、Matchもそこに入れた方が確実なのでは、ということ(Matchの結果がいつまで保存されてるかは不明)
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 592.5 KiB (Peak: 609.41 KiB) ]