いいね!数

0

閲覧数
155

フォームは①と②があります。
フォーム①と②には項目A(選択式で1択のみ選択可)があります。

アクションボタンに新規作成ボタンを作成し、項目Aの内容を選択させるようにし、
選択した内容によりフォーム①かフォーム②の新規文書を作成したいです。

■新規作成ボタンの式↓
choice:=@PickList([Custom]:[Single];"";"ビュー";"項目A選択";"項目Aを選択してください";1);
@if(choice="a";@Command([Compose];"";"フォーム①");@Command([Compose];"";"フォーム②"))

以上の式で開きたいフォームは開きます。

ただ、この選択した項目Aの内容を開いたフォームに値をセットしたいのですが、できません。
どのようにしたらできますでしょうか?

 

サーバー情報:WindowsV9 | クライアント情報:Windows10V7 | 
カテゴリ:Notes - 使い方 | タグ:
  | 質問日時:2021/05/27 9:00:16

回答・コメント

いいね!数

1

次のようにして @UpdateFormulaContext を使ってみてはいかがでしょうか。

 

choice:=@PickList([Custom]:[Single];"";"ビュー";"項目A選択";"項目Aを選択してください";1);
@if(choice="a";@Command([Compose];"";"フォーム①");@Command([Compose];"";"フォーム②"))
@UpdateFormulaContext;
@Command([EditGotoField]; "値をセットしたいフィールドの名前");
@Command([EditInsertText]; choice)

回答日時:2021/05/27 9:46:36

いいね!数

0

Nakanoさま

回答ありがとうございます。

@UpdateFormulaContext;
@Command([EditGotoField]; "値をセットしたいフィールドの名前");
@Command([EditInsertText]; choice)

を式に追加しました。

結果なのですが、
①新規作成ボタンをクリック
②項目Aの選択が表示されるので、「〇〇〇」を選択
③正しいフォーム①orフォーム②が開く
④フォーム①orフォーム②の項目Aに値はセットされていない
 ただし、フィールドがなにもないところに②で選択された「〇〇〇」が表示されている。
 (なぜこのようなところに値が表示されているのかは不明)

 フォーム①、フォーム②には項目Aのフィールドが「編集可能」フィールドとしてあります。

何かまだ考慮不足がありますでしょうか…

回答日時:2021/05/27 14:10:22

いいね!数

1

EditGotoField @コマンドに指定するフィールド名は、フォーム上に存在するのでしょうか。

例えば、EditGotoField で指定したフィールド名が開いたフォーム上に存在しなければ、フォーム上で最初にカーソルが置かれるエリアに値が表示されるように思います。この「エリア」とはフィールドとは限りません。

 

※動作確認したアプリを添付します。アクションボタンはビューにあります。

 

File TypeSizeFile Name
application/octet-stream 448 KB OpenForm&SetValue2Field.nsf
回答日時:2021/05/28 0:07:25

いいね!数

0

Nakanoさま

回答ありがとうございます。また、サンプルDBまで頂き感謝いたします。

「 例えば、EditGotoField で指定したフィールド名が開いたフォーム上に存在しなければ、 」ですが、フォーム上にフィールドは存在していたのですが、セクション内にあり、省略表示だったため、カーソルの移動ができなかったようです。
セクションを展開し試すとできました。

そこで続けてご教示いただければ…

EditGotoField を使用するということは編集可能フィールドでなくてはならないと思います。
今回は「 @Command([EditInsertText]; choice) 」でセットした値はフォーム上では値の変更はできないようにしたいです。

どのような方法で実現できますでしょうか。

宜しくお願い致します。

回答日時:2021/05/28 12:09:09

いいね!数

1

ホントですね。セットしようとするフィールドが、デフォルトで閉じている状態のセクションの中にあると、閉じたセクションのタイトルの右側に文字が表示されました。

 

値をセットするフィールドが編集可能ではない場合、別の方法が使えると思います。

例えば「FIELD <フィールド名> := <値 or 変数名>」です。

@UpdateFormulaContext;
FIELD 値をセットしたいフィールドの名前 := choice;
 

この他「@SetField( "値をセットしたいフィールドの名前"; choice);」も使えそうです。

回答日時:2021/05/28 12:35:06

いいね!数

0

Nakanoさま

大変、大変ありがとうございました。
完璧にできました。

実は自分で「 FIELD 値をセットしたいフィールドの名前 := choice; 」をかいてみたのですが、うまくいかなくて教えていただいた状況でした。できなかったのは、私が少々ミスっていたからでした。

『フィールド名が開いたフォーム上に存在しなければ、フォーム上で最初にカーソルが置かれるエリアに値が表示されるように思います。この「エリア」とはフィールドとは限りません。 』
こちらは知らなかった内容で勉強になりました。

丁寧なご指導ありがとうございました。

 

回答日時:2021/05/28 14:45:18