4D-JUG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

フォーミュラで更新...

2 posters

Go down

フォーミュラで更新... Empty フォーミュラで更新...

投稿 by shige 2020-03-09, 10:06 am

4Dv17(Win)を使用しています。

フォーミュラエディターで、マスタテーブルのフィールドへリレーションしている別テーブルのフィールド値を格納させたいのですが...
リレートテーブルに切り替えても対象テーブルが表示されません。

しかしながら、別のテーブルでは表示できるテーブルもあります。

この表示する、表示しないの違いは何でしょうか?

shige

投稿数 : 62
登録日 : 2018/03/31

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by miyako 2020-03-09, 10:27 am

対象テーブルが

非表示ではない
自動N対1リレートが有効である

・・・ことが必要なのではないでしょうか

miyako

投稿数 : 483
登録日 : 2016/07/05

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by shige 2020-03-09, 10:46 am

ご連絡ありがとうございます。
状況をもう少し詳しく記載します。

(リレーション)
 [商品](N) → [ログ](1)
 (Key:[商品]WorkNo(Longint)→[ログ]WorkNo(Longint))
 ※テーブルプロパティによる非表示等の設定は行っていません。

(やりたい事)
 フォーミュラエディターにて、「[商品]備考」フィールドに
 「[ログ]内容」を格納させたい。
 ([商品]備考:=[ログ]内容)

 そういったプログラムを書けば済む話ですが...ユーザ側による作業の為、
 今回は上記フィールド間ですが、このパターンだけとは限らない為...

(問題点)
 フォーミュラエディターの「リレートテーブル」に切り替えても
 [ログ]テーブルが表示されない。


何が原因なのでしょうか?
ご教示ください。

shige

投稿数 : 62
登録日 : 2018/03/31

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by miyako 2020-03-14, 6:13 pm

前の投稿で申し上げたように,「自動リレート」が関係していると思うのですが,いかがでしょうか。

SET FIELD RELATION(推奨)
https://doc.4d.com/4Dv18/4D/18/SET-FIELD-RELATION.301-4505055.ja.html

あるいは

SET AUTOMATIC RELATIONS
https://doc.4d.com/4Dv18/4D/18/SET-AUTOMATIC-RELATIONS.301-4505059.ja.html

で,一時的に設定を変更できるかもしれません。

miyako

投稿数 : 483
登録日 : 2016/07/05

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by shige 2020-03-16, 10:47 am

ご連絡ありがとうございます。

「SET FIELD RELATION」の記述でフォーミュラエディタからリレーション先のフィールドが選択できるようになりました。

処理的には希望通りの動作が得られるようになりました。

ちなみに「SET FIELD RELATION」で設定変更後、元に戻す...という処理は必要ないのでしょうか?

shige

投稿数 : 62
登録日 : 2018/03/31

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by shige 2020-03-17, 1:59 pm

もう一点質問なのですが...

EDIT FORMULA([CatalogF];$myFormula)
APPLY TO SELECTION([XXXXXF];EXECUTE FORMULA($myFormula))

...というように、ユーザ入力で 置換する方式を取っているのですが、
この時、文法エラーが発生した場合、4Dが落ちてしまいます。

EDIT FORMULAで入力された文法が正しいかどうかの判断は取れないでしょうか?

ON ERR CALLで、エラー時の回避ルートを通しても、インタプリタでは回避できますが、コンパイル済ですと、やはり落ちてしまいます。

何か解決策はないでしょうか?

shige

投稿数 : 62
登録日 : 2018/03/31

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by miyako 2020-03-17, 2:25 pm

こちらのコマンドはいかがでしょうか

https://doc.4d.com/4Dv17/4D/17.4/Parse-formula.301-4883247.ja.html

miyako

投稿数 : 483
登録日 : 2016/07/05

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by shige 2020-03-17, 2:44 pm

ご連絡ありがとうございます。

スペルミスや関数の文法エラー等はチェックできますか?
例えば、「:=」が「=」だったり、テキストフィールドに「NUM(XXXX)」で格納使用していたり....など

ユーザが誤った記述をしてAPPLY TO SELECTION~ステップを実行してしまうと4Dが落ちてしまします。

エラーの場合は、分岐してAPPLY TO SELECTIONのステップをスルーしたいのですが...

可能でしょうか?

shige

投稿数 : 62
登録日 : 2018/03/31

トップに戻る Go down

フォーミュラで更新... Empty Re: フォーミュラで更新...

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可