初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-11-07 20:57:44

うさぎ
Guest

ポータル表示

初心者です。
ポータル表示がうまくいかず困っています。

社員コード 氏名 年月を上部に配置
ポータルで出退勤時間一覧を表示させて入力修正削除をしていきたいのですが、表示のところでつまっています。
(氏名は社員コードで社員情報からマージで表示させています。)
年月と社員コードで該当レコードを表示させたいです。

出勤記録(テーブル)
社員コード、氏名、年月、日付、出勤時間、退勤時間、休憩時間・・・(フィールド)

①年月フィールドをグローバルで作成
②出勤記録テーブルをコピーして社員コードと年月をリレーション
③グローバル年月にGet(日付)を使って年月に変換
④レイアウトにポータルを設置

結果、年月フィールドには2022年11月と表示されるのですがポータルにはまったくちがう年月レコードが表示されます。
社員コードもグローバルにしてリレーションしなけらばならないのでしょうか?
フィルター?を使う?

お願いします

#2 2022-11-08 08:29:20

himadanee
Guest

Re: ポータル表示

テーブルは1つだけですか?
>②出勤記録テーブルをコピーして
というのを見ると、ポータルを置くレイアウトのテーブルも同じテーブルのようですが
それだと表示したい社員コードを検索するんでなければ「社員コードもグローバル」が必要です。
「年月と社員コードで該当レコードを表示」の年月を入力するなら「社員コード」も検索でなく入力したいと思いますが(検索するのにもどっちみち入力する必要がある)

社員マスタがあると思うので、そっちをレイアウトのテーブルにすれば、1社員1レコードになってますから「年月」だけグローバルに入力すればいいですが

いずれにしろ「まったくちがう年月レコードが表示され」は変ですね。
「社員コードと年月をリレーション」は、「それぞれ同じフィールドを」であって、社員と年月を=で結んだわけではないですよね?

#3 2022-11-08 13:26:13

うさぎ
Guest

Re: ポータル表示

返信ありがとうございます!

レイアウト上部で社員コード(入力)年月(初期値はGet(日付)で)でテーブルは出勤記録になっています。

「年月と社員コードで該当レコードを表示」の年月を入力するなら「社員コード」も検索でなく入力したいと思いますが(検索するのにもどっちみち入力する必要がある)

社員コードはその都度入力したいです。(社員コードと年月で検索(絞り込み?)してポータル表示)
これをやりたいのですが、やり方がわからなくて・・・

「社員コードと年月をリレーション」は、「それぞれ同じフィールドを」であって、社員と年月を=で結んだわけではないですよね?
同じフィールドを結びました。

#4 2022-11-08 14:52:56

himadanee
Guest

Re: ポータル表示

>社員コード(入力)年月(初期値はGet(日付)で)
これを両方グローバルで、今あるフィールドとは別に作らないと、表示しようと思って「その都度入力した」たびに無駄な新規レコードができるか、既存のデータを書き換えてしまいます。

すると当然1つのテーブルで複数のフィールド名を同じにはできませんから、リレーションも「同じフィールドを結ぶ」ことにはなりません。
例えば
出勤記録::g社員コード=出勤記録のコピー::社員コード
AND
出勤記録::g年月=出勤記録のコピー::年月
のようになります。
(g年月の方が初期値はGet(日付)からの計算の年月で、年月、は日付からの計算フィールドです)

「②出勤記録テーブルをコピーして」は、多分リレーショングラフでのコピーでしょうから、それなら問題ないですが、テーブル定義画面でコピーすると別のテーブルになってしまいます。

#5 2022-11-08 17:53:47

うさぎ
Guest

Re: ポータル表示

ありがとうございます。

社員コードをグローバルで作成というのはgテーブルにすればいいのか?出勤記録の原本に作成すればいいのか?

出勤記録::g社員コード=出勤記録のコピー::社員コード
AND
出勤記録::g年月=出勤記録のコピー::年月
のようになります。
↑これはどこに記入すればいいのでしょうか?ポータル設定のフィルターのところでしょうか?

年月は出勤記録テーブルに年月フィールド(日付から計算しています)があります。

gテーブルに年月(グローバル)を作成してあります。

#6 2022-11-08 18:56:42

himadanee
Guest

Re: ポータル表示

ANDのは、リレーションの設定です。

gテーブルを別に作るなら、レイアウトをそのテーブルで作る必要があります。

#7 2022-11-08 19:32:47

うさぎ
Guest

Re: ポータル表示

レイアウトの上部の社員番号フィールドをフィールドの指定でg社員番号
同じく年月をg年月に設定しました。

gテーブルにはg年月とg社員番号があります。

そのあとがわかりません。

#8 2022-11-08 20:16:59

うさぎ
Guest

Re: ポータル表示

なんとか表示できるようになりました。ありがとうございます。

g社員番号から社員名を表示させたいのですが、マージフィールドで社員情報::氏名にすると別の名前が
でてきてしまいます。
リレーションで社員情報テーブルと出退勤テーブルを社員番号でつないでいます。
g番号につなぐときちんと表示されるのですが、他でくるってきてしまいます。

どのようにしたらいいんでしょうか?

#9 2022-11-09 08:32:42

himadanee
Guest

Re: ポータル表示

#1に
(氏名は社員コードで社員情報からマージで表示させています。)
て書いてましたね...
少なくとも3つテーブルがあるわけですね。

gテーブルというのは使ったことがないので、「gテーブルを別に作るなら、レイアウトをそのテーブルで作る必要があります。」と書いたのは間違いだったかもしれません。
自分は、用途がテーブルに結びついてるグローバルフィールドは、そのテーブルに作ります。
この場合は、ポータル表示の親が社員情報でしょう(社員名を表示させたい)から、そこにグローバルフィールドを作れば、リレーションが単純になります。
(年月ごとの情報が何かあるなら、ポータルの親が出退勤テーブルの方がいいかもしれません)

テーブル間に複数のリレーションを作る場合は、リレーションがループしないようにリレーショングラフ上で随時必要に応じてテーブルの複製を作ることになります。
どれをどのリレーションに使ってもいいですが、計算式などで、今どのテーブル(のコピー、オカレンスという)を基準にする(コンテキストという)のか考えなくてはいけません。

#10 2022-11-09 13:19:28

うさぎ
Guest

Re: ポータル表示

社員情報にg社員名を作成するということでしょうか?
その場合どのように設定したらいいんでしょうか?

g社員コードが代わったらg社員コードで社員情報検索→一致したレコードの氏名を表示
(スクリプト?)というやり方だと難しいですか?

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 586.07 KiB (Peak: 602.61 KiB) ]