みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
リスト形式の顧客一覧表示画面とフォーム形式の顧客詳細画面を持っています。
FileMaker Pro Advanced 17のMac版を使用しています。
一覧画面表示で任意の行をクリックした状態(アクティブな行状態にチェックを入れて水色で表示)で「新規レコード」ボタンを押します。
※新規作成をして顧客詳細画面へ遷移します。入力後「戻る」ボタンをクリックして一覧画面に戻ります。
この時に一覧画面でクリックした状態(「新規レコード」ボタンを押す直前の状態)を再現したいのです。
試したことととして、
1)ボディ部にボタンを仕込んでクリックした時点でGet ( アクティブレコード番号)を取得して戻った時点で一覧に戻ると、レコードが追加されているのでレコード移動をすると1つずれてしまいます。
2)Get(レコードID)がいいような気がしたのですが、レコード移動ではエラー101が表示されて上手くいかない
3)レコードのUUIDを取得したのですが、一覧画面に戻った時点でレコード移動ではエラー101が表示されて上手くいかない
このような場合、どうするのがいいでしょうか?
ご教示ください。
よろしくお願いします。
新規レコードのボタンで、最初に新規ウィンドウを開く を入れておき、
戻る時には、ウィンドウを閉じる を行うのが簡単でしょう。
Offline
Shinさまありがとうございます。
今回は新規ウインドウを使わずに単一ウインドウで制御したいと思っています。
リスト表示の状態でUUIDを取得して、戻った時点でレコード移動でUUIDを指定することはできないものでしょうか?
> 「新規レコード」ボタンを押す直前の状態
新規レコードを作る前の状態
ということでしたら、新規レコードを削除しなければなりませんが、
そう言うことでしょうか?
Offline
・「レコードID」計算フィールドと「履歴ID」グローバルフィールドを追加。
・両者をキーに「自己リレーション」を張る。
以上を準備した状態で、
・現在のレコードIDをグローバルフィールドに書留め、
・フォームレイアウトで新規レコードを作成
・「自己リレーションの関連レコードへ移動」で元の一覧レイアウトへ戻る
Offline
> 「新規レコード」ボタンを押す直前の状態
新規レコードを作る前の状態
ということでしたら、新規レコードを削除しなければなりませんが、
そう言うことでしょうか?
ちぽさま
違います。
例えばこういうことを言いたかったのです。
------------
顧客コード
1
2
3
4
5
6
7 ←このレコード(行)を選択してアクティブにする
8
9
10
------------
この状態で新規レコード作成(顧客コード11が作成される)
------------
顧客コード
1
2
3
4
5
6
7 ←このレコード(行)を選択してアクティブにしたい
8
9
10
11
------------
ソート順として顧客コードの昇順をしています。
ちゃんと伝えきれずにすみません。よろしくお願いします。
顧客コードが自動採番でシリアル値のように見えますから
「顧客詳細画面」でソート順や「顧客コード」の値を変えることがなければ
新規レコード作成するスクリプト内で[新規レコード/検索条件]より前に Get ( レコード番号 ) を取得して変数などに記録しておき、
一覧レイアウトに戻った際にそのレコード番号に移動すれば済みそうですね。
[レコード/検索条件/ページへ移動]のスクリプトステップではレコードIDやUUID(フィールド値)を指定して移動することはできません。
https://fmhelp.filemaker.com/help/17/fm … -page.html
Offline
顧客コードが自動採番でシリアル値のように見えますから
「顧客詳細画面」でソート順や「顧客コード」の値を変えることがなければ
新規レコード作成するスクリプト内で[新規レコード/検索条件]より前に Get ( レコード番号 ) を取得して変数などに記録しておき、
一覧レイアウトに戻った際にそのレコード番号に移動すれば済みそうですね。[レコード/検索条件/ページへ移動]のスクリプトステップではレコードIDやUUID(フィールド値)を指定して移動することはできません。
https://fmhelp.filemaker.com/help/17/fm … -page.html
Mozさま、ありがとうございます。
それも考えたのですが、新規レコードを他の人が作成したり削除することで一覧に戻ると対象レコード数が変化している可能性があります。
なのでレコード/検索条件/ページへ移動でレコード番号を入力するとアクティブになる行がずれてしまいます。
ヘルプ見たらレコードIDを使った方がいいような感じだったのですが、
https://fmhelp.filemaker.com/help/17/fm … er.html%23
https://fmhelp.filemaker.com/help/16/fm … ordid.html
・「レコードID」計算フィールドと「履歴ID」グローバルフィールドを追加。
・両者をキーに「自己リレーション」を張る。
以上を準備した状態で、
・現在のレコードIDをグローバルフィールドに書留め、
・フォームレイアウトで新規レコードを作成
・「自己リレーションの関連レコードへ移動」で元の一覧レイアウトへ戻る
Hiroさま ありがとうございます。
関連レコード移動をした場合、すである全てのレコードも表示させることは可能でしょうか?
ヘルプに書かれているのはレコードを識別する目的として利用する場合は
対象レコードによって値の変化する Get ( レコード番号 ) より Get ( レコード ID ) が適するという内容です。
Get ( レコード ID ) が[レコードへ移動]で使えるということではありません。
別ウインドウにすることを忌避する特別な理由がなければ Shin さんのやり方が簡単ですし
どうしてもシングルウインドウに拘るなら Hiro さんのやり方が良いのでは?
レコードを削除すればリストの状態が変わる(レコードが消えてしまう)ことに変わりはないので
「詳細で作業中に他の人がレコードを削除してしまう可能性」に対して
開発と運用開始後のメンテナンスのコストが見合うのかを考えてシンプルに作るのもアリだと思いますよ。
Offline
>#8 ぽちさん『・・・・可能でしょうか?』
先ずは、#5の提案を試してみましょう。
出来る方法を回答しているつもりです。
Offline
UUIDが入るフィールドを作成。
フィールド名「_k」自動入力 計算値 Get( UUID ) ※フィールド名は任意
_kの一覧 の集計フィールドを作成
フィールド名「集計フィールド_kの一覧」※フィールド名は任意
新規レコード作成スクリプト中で現在選択中のレコードの _k の値を $$UUID に保存
一覧レイアウトに変わるときに以下のようにすると、$$UUID が何行目かが得られ、それがレコード番号になります。
let([
p=position ( 集計フィールド_kの一覧 ; $$UUID ; 1 ; 1 )
;str=left ( 集計フィールド_kの一覧 ; p )
];
patterncount ( str ; ¶ )+1
)
※一覧 <-> 詳細 レイアウトを行き来する場合、同一レコードと言うのが良いと思われますが、何か事情(目的)があるのでしょうか...?
Offline
グローバルフィールドを作っておき、顧客コードとリレーションしておきます。
GetNextSerialValue で次の顧客コードを取得し、グローバルフィールドに設定。そのリレーションを通して、新規レコードの他の情報を入力する、という方法もいいのかも。
> 今回は新規ウインドウを使わずに単一ウインドウで制御したい
この必然性が全く理解できないですが。
Last edited by Shin (2019-01-05 02:38:34)
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 599.63 KiB (Peak: 616.53 KiB) ]