初心者のFileMaker pro Q&A

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

1.ファイルメーカーで解らない事があればここで質問して下さい。

何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス


#1 2019-04-02 20:03:13

まろ爺
ゲストユーザー

[解決] 令和になるので

後期高齢者になってだいぶ鈍くなっています。よろしくお願いいたします。
私も新年号問題で困っています。
見積書作成日、請求日、工事完了日、書類発送日などいくつかの日付けを
和暦で表示させています。
モナさんの「年号がかわったら」に対するShinさんの解答を盗み見して
見積書作成日のフィールドを日付から計算に変更して計算式の指定欄に
-------------------------------------------------------------------------
Let ( [
令和 = Date ( 5 ; 1 ; 2019 ) ;
平成 = Date ( 1 ; 8 ; 1989 )
.... ] ; 
Case (
  Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
  日付 >= 令和 ; "令和元"  ;
  Year ( 日付 ) > Year ( 平成 ) ; "平成" & ( Year ( 日付 ) - Year ( 平成 ) + 1 ) ;
  日付 >= 平成 ; "平成元"  ;
  ... )
)
--------------------------------------------------------------------------
とコピーして計算結果を日付に変えてOKしましたが
「この式は、計算できませんでした」とエラーになってしまいます。

この式は、平成1年や令和1年の場合は平成元年、令和元年にすのだな
くらいのことが分かる程度です。
Shinさんの式だけでは何が足りないのでしょうか。
FileMaker Pro 12 Advanced を使用しています。

#2 2019-04-02 20:32:56

Shin
メンバー

Re: [解決] 令和になるので

骨格がわかれば、残りは自己追加で、ということで、... の部分を同じように追加してもらえばいいのですが。
Let (
[
令和 = Date ( 5 ; 1 ; 2019 ) ;
平成 = Date ( 1 ; 8 ; 1989 ) ;
昭和 = Date ( 12 ; 25 ; 1926 ) ;
大正 = Date ( 7 ; 30 ; 1912 ) ;
明治 = Date ( 9 ; 8 ; 1868 )
] ;
Case (
  Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
  日付 >= 令和 ; "令和元"  ;
  Year ( 日付 ) > Year ( 平成 ) ; "平成" & ( Year ( 日付 ) - Year ( 平成 ) + 1 ) ;
  日付 >= 平成 ; "平成元"  ;
  Year ( 日付 ) > Year ( 昭和 ) ; "昭和" & ( Year ( 日付 ) - Year ( 昭和 ) + 1 ) ;
  日付 >= 昭和 ; "昭和元"  ;
  Year ( 日付 ) > Year ( 大正 ) ; "大正" & ( Year ( 日付 ) - Year ( 大正 ) + 1 ) ;
  日付 >= 大正 ; "大正元"  ;
  Year ( 日付 ) > Year ( 明治 ) ; "明治" & ( Year ( 日付 ) - Year ( 明治 ) + 1 ) ;
  日付 >= 明治 ; "明治元" ;
  "西暦" & Year ( 日付 )
)
) & ”年” & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"

または、チポさんの提案のように、YearName (日付フィールド ; 0) に置き換えてもいいです。
Let (
令和 = Date ( 5 ; 1 ; 2019 ) ;
Case (
  Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
  日付 >= 令和 ; "令和元"  ;
  YearName ( 日付 ; 0 )
)
) & ”年” & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"

編集者 Shin (2019-04-04 10:08:56)

オフライン

#3 2019-04-03 00:03:53

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

Shin様
早々に有りがとうございます。
Shinさんの方法とチポさんのやり方をコピーしてやってみましたが、
「指定されたフィールドが見つかりません。」とはねられました。

どこをどうすれば良いのでしょうか。

#4 2019-04-03 00:15:34

札幌太郎
ゲストユーザー

Re: [解決] 令和になるので

以下、コピペしてみてください。2020年12月30日の元号が得られます。(令和2年12月30日)

Let ( [
		日付 = Date ( 12 ; 30 ; 2020 ) ;
		令和 = Date ( 5 ; 1 ; 2019 )
	] ;
	Case (
		Year ( 日付 ) > Year ( 令和 ) ;
		"令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
		日付 >= 令和 ;
		"令和元" ;
		YearName ( 日付 ; 0 )
	) & ”年” & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"
)

#5 2019-04-03 00:32:51

Shin
メンバー

Re: [解決] 令和になるので

別に、日付 というフィールドを作り、日付を設定します。

オフライン

#6 2019-04-03 09:47:55

チポ
メンバー

Re: [解決] 令和になるので

計算フィールドの計算結果はテキストですよ、日付ではダメです。

> 見積書作成日、請求日、工事完了日、書類発送日など
これらは入力用としてそのままにしておきます。
それぞれに対応する計算フィールドを作り表示用とします。


余談ですが、、
私も日付が入るファイルが相当あります。
今月から表示の元号をやめて西暦に統一しました。

オフライン

#7 2019-04-03 10:15:16

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

Shin さんの発言:

別に、日付 というフィールドを作り、日付を設定します。

Shin様、やってみましたが

「このフィールドは変更禁止なので、この操作は実行できません。」と出ます。

札幌太郎さんのをコピペした場合も同じです。(フィールドに「?」が出ます)

これを解除する方法を教えて頂けますか。

#8 2019-04-03 11:15:40

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

チポ さんの発言:

計算フィールドの計算結果はテキストですよ、日付ではダメです。

チポ様、有りがとうございます。

テキストにしてみたら、日付フィールドに「令和?年?月?日」と
表示されました。(Shinさんの式です)

「このフィールドは変更禁止なので、……」触れません。

#9 2019-04-03 11:28:10

チポ
メンバー

Re: [解決] 令和になるので

例えば、
  請求日
を例に整理しますね。

  請求日フィールド(日付)
これは入力用で、日付を入力します。

  請求日表示用フィールド(計算・テキストタイプ)
これは上記の請求書フィールドに入力された日付を、
令和を含めた和暦に計算するフィールドで、
計算式はShinさんの式の
「日付」

「請求日」
に変更します。


他の日付のフィールドも同様に設定します。

オフライン

#10 2019-04-03 15:14:16

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

チポ様、有りがとうございます。解決です。

私も半分諦めて、西暦表示にしようかと思いましたが
チポさんのやり方とShinさんの式で改元問題は解決
いたしました。
私の誕生日1941/01/04 と日付に入れますと
「昭和16年1月4日」出てうれしくなりました。

これから、工事完了日、書類発送日、等々間違えないように
書き換えていきます。

皆さん、有りがとうございます。

#11 2019-04-03 15:51:05

Shin
メンバー

Re: [解決] 令和になるので

札幌太郎さんの提示されている式を使って、最初の 日付 = ... の部分に、工事完了日 などを当てはめて、日付 = テーブル::工事完了日 などをしておけば、そこを書き換えるだけで流用できます。

ただ、おすすめは、最新バージョンへの移行です。

オフライン

#12 2019-04-04 09:07:36

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

Shin さんの発言:

札幌太郎さんの提示されている式を使って、最初の 日付 = ... の部分に、工事完了日 などを当てはめて、日付 = テーブル::工事完了日 などをしておけば、そこを書き換えるだけで流用できます。

ただ、おすすめは、最新バージョンへの移行です。

一件落着かと思ったのはつかの間で、日付フィールド一つではいろんな日付が同一化してしまい、
Shinさんのこの方法をやればと思いましたが、まろ爺の頭では、上手くいきません。

ちょっと収集が着かなくなったので、当面は西暦でいこうかと… …。

私の歳と商売の規模では、最新バージョンへの移行は高嶺の花です。
FileMaker Pro 12 Advanced を使用していますがAdvanced を活用できていません。

#13 2019-04-04 09:50:28

チポ
メンバー

Re: [解決] 令和になるので

前に書いた通り、
日付入力フィールド一つずつに対応した表示用の計算フィールドが必要です。

Shinさんが書かれたのはその計算式作成の簡略法ですね。

オフライン

#14 2019-04-04 10:01:49

Shin
メンバー

Re: [解決] 令和になるので

Let (
[
日付 = 工事完了日 ;
令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
  Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
  日付 >= 令和 ; "令和元"  ;
  YearName ( 日付 ; 0 )
)
) & ”年” & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"

という式にしておいて、赤字の部分を、目的とする日付のフィールドに変更します。手間が省けますよ。

オフライン

#15 2019-04-04 16:55:23

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

以下のようにやってみました。

Let (
[
日付 = 完了日 ;
令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
  Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
  日付 >= 令和 ; "令和元"  ;
  YearName ( 日付 ; 0 )
)
) & "年" & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"
------------------------------------------------------------------------------------------
Let (
[
日付 = 請求日 ;
令和 = Date ( 5 ; 1 ; 2019 ) ;
平成 = Date ( 1 ; 8 ; 1989 ) ;
昭和 = Date ( 12 ; 25 ; 1926 ) ;
大正 = Date ( 7 ; 30 ; 1912 ) ;
明治 = Date ( 9 ; 8 ; 1868 )
] ;
Case (
  Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
  日付 >= 令和 ; "令和元"  ;
  Year ( 日付 ) > Year ( 平成 ) ; "平成" & ( Year ( 日付 ) - Year ( 平成 ) + 1 ) ;
  日付 >= 平成 ; "平成元"  ;
  Year ( 日付 ) > Year ( 昭和 ) ; "昭和" & ( Year ( 日付 ) - Year ( 昭和 ) + 1 ) ;
  日付 >= 昭和 ; "昭和元"  ;
  Year ( 日付 ) > Year ( 大正 ) ; "大正" & ( Year ( 日付 ) - Year ( 大正 ) + 1 ) ;
  日付 >= 大正 ; "大正元"  ;
  Year ( 日付 ) > Year ( 明治 ) ; "明治" & ( Year ( 日付 ) - Year ( 明治 ) + 1 ) ;
  日付 >= 明治 ; "明治元" ;
"西暦" & Year ( 日付 )
)
) & "年" & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"
----------------------------------------------------------------------------------------
書き初めの、日付 = 完了日 ; や 日付 = 請求日 ;  を挿入する前は、日付フィールドに2019/04/04、または2019/05/01と入れると平成31年4月4日、または令和元年5月1日と表示されて、うれしかったのですが、ファイルのあちこちが日付に蹂躙されてしまい、困ったことになりました。
今回、日付 = 完了日 ;や日付 = 完了日 ; を挿入すると、そのフィールドに 令和?年?月?日 と表示されて「このフィールドは変更禁止なので、この操作は実行できません。」と出ていじることができません。完了日 や 請求日 を指定して任意の日付を入れられるフィールドの作り方を、まろ爺にご指導ください。

#16 2019-04-04 19:20:00

Hiro
メンバー

Re: [解決] 令和になるので

回答とは違いますが、
Let式内変数の記述について、

規定の変数マーカ $ が不要な式内変数であっても、
敢えて私設マーカ(#変数、~変数など)を付けて、
式内変数の誤認なく式内見通しが良くなるよう、
私は努めています。

オフライン

#17 2019-04-04 23:03:55

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

私がやりたいことを少し整理してみました。
「受注カード」レイアウトに「完了日入」フィールドを作り、2019/04/04と入力すると、「納品書」レイアウトの「完了日」フィールドに 平成31年 4月 4日、と表示されるようにしたいのです。もちろん 2019/05/10 と入れれば 令和元年 5月10日 と出るように。同じく、「受注カード」レイアウトに「請求日入」フィールドを作り、2019/05/10と入力すると、「請求書」レイアウトの「請求日」フィールドに 令和元年 5月10日、と表示されるようにです。
Shinさんの

Let (
[
令和 = Date ( 5 ; 1 ; 2019 ) ;
平成 = Date ( 1 ; 8 ; 1989 ) ;
昭和 = Date ( 12 ; 25 ; 1926 ) ;
大正 = Date ( 7 ; 30 ; 1912 ) ;
明治 = Date ( 9 ; 8 ; 1868 )
] ;
Case (
  Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
  日付 >= 令和 ; "令和元"  ;
  Year ( 日付 ) > Year ( 平成 ) ; "平成" & ( Year ( 日付 ) - Year ( 平成 ) + 1 ) ;
  日付 >= 平成 ; "平成元"  ;
  Year ( 日付 ) > Year ( 昭和 ) ; "昭和" & ( Year ( 日付 ) - Year ( 昭和 ) + 1 ) ;
  日付 >= 昭和 ; "昭和元"  ;
  Year ( 日付 ) > Year ( 大正 ) ; "大正" & ( Year ( 日付 ) - Year ( 大正 ) + 1 ) ;
  日付 >= 大正 ; "大正元"  ;
  Year ( 日付 ) > Year ( 明治 ) ; "明治" & ( Year ( 日付 ) - Year ( 明治 ) + 1 ) ;
  日付 >= 明治 ; "明治元" ;
"西暦" & Year ( 日付 )
)
) & ”年” & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"

これを、どう編集すれば良いのか、「完了日入」や「請求日入」の式の書き方はなどです。

よろしくお願いいたします。

#18 2019-04-05 09:20:42

チポ
メンバー

Re: [解決] 令和になるので

> 「受注カード」レイアウトに「完了日入」フィールドを作り、2019/04/04と入力すると、
> 「納品書」レイアウトの「完了日」フィールドに 平成31年 4月 4日、と表示されるようにしたいのです

この二つのレイアウトは同じテーブルですよね。
異なると新たな考えが必要になりますが、
同じとします。


採用された式は冗長すぎますよ、
Shinさんの#14の式から

完了日の計算式
Let (
[
#日付 = 完了日入 ;
#令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
  Year ( #日付 ) > Year ( #令和 ) ; "令和" & ( Year ( #日付 ) - Year ( #令和 ) + 1 ) ;
  #日付 >= #令和 ; "令和元"  ;
  YearName ( #日付 ; 0 )
)
) & ”年” & Month ( #日付 ) & "月" & Day ( #日付 ) & "日"

でいいでしょう。

オフライン

#19 2019-04-05 11:24:08

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

チポさんの教え通りやってみましたが、

) & ”年” & Month ( #日付 ) & "月" & Day ( #日付 ) & "日"
                          ~~~~
最後の行の#日付が反転して「指定されたフィールドが見つかりません。」と出て
OKできません。

#20 2019-04-05 11:34:05

チポ
メンバー

Re: [解決] 令和になるので

全角、半角の違いとか、なんかゴミが付いているのでは。

最初の
> #日付 = 完了日入
これから
コピペすれば間違いないでしょう。

オフライン

#21 2019-04-05 13:25:30

alias
メンバー

Re: [解決] 令和になるので

「#日付」はLet内で有効な変数なので、Let() 内に入れる必要があります。

Let (
[
#日付 = 完了日入 ;
#令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
  Year ( #日付 ) > Year ( #令和 ) ; "令和" & ( Year ( #日付 ) - Year ( #令和 ) + 1 ) ;
  #日付 >= #令和 ; "令和元"  ;
  YearName ( #日付 ; 0 )
)
& ”年” & Month ( #日付 ) & "月" & Day ( #日付 ) & "日"
)

オフライン

#22 2019-04-05 13:37:57

チポ
メンバー

Re: [解決] 令和になるので

ああ、見落としていました。

その通りです、
  )
の位置に注意してください。

オフライン

#23 2019-04-05 14:56:21

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

解決です。チポさん、aliasさん、Shinさん、ほかの皆さん。
脳みその溶けかけた私に、辛抱強く付き合って下さった皆さん。有りがとうございます。
あとは、たくさんある日付フィールドを一つずつ直していくだけです。

うれしくなって、お祝いに最新バージョンを買いたくなった気分ですが、
それでは意味ないか。冗談でなく感謝感謝です。

#24 2019-04-07 12:25:37

まろ爺
ゲストユーザー

Re: [解決] 令和になるので

まろ爺です。教えて頂いた

Let (
[
#日付 = 契約日 ;
#令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
  Year ( #日付 ) > Year ( #令和 ) ; "令和" & ( Year ( #日付 ) - Year ( #令和 ) + 1 ) ;
  #日付 >= #令和 ; "令和元"  ;
  YearName ( #日付 ; 0 )
)
& "年" & Month ( #日付 ) & "月" & Day ( #日付 ) & "日"
)

この式で、2019/04/07 で 平成31年4月7日 と出ますが、平成31年 4月 7日 とか 令和 2年 5月18日 のように一桁の数字には半角空白が入るようにするには、上記の式をどう編集すれば良いのでしょうか。

#25 2019-04-07 13:37:57

Hiro
メンバー

Re: [解決] 令和になるので

Let(
[
   #日付=契約日フィールド;
   #令和=Date(5;1;2019);
   #年号=
      Case(
         Year(#日付)>Year(#令和); "令和"&(Year(#日付)-Year(#令和)+1);
         #日付>=#令和; "令和元";
         YearName(#日付;0)
      );
   #書式=" ";   /* ←※ スペース挿入は " "、ゼロは "0"、ナシは "" を指定 */
   #年=LeftWords(#年号;1)
      /* & Case(Filter(#年号;"元")=""; Right(#書式&RightWords(#年号;1); 2)); */
           & Case(#年号*1; Right(#書式&#年号*1; 2));
   #月=Right(#書式&Month(#日付); 2);
   #日=Right(#書式&Day(#日付); 2)
];
   #年&"年" & #月&"月" & #日&"日"
)

【式の修正履歴】
式の一部(打消し線部分)を等価短縮して少しだけ簡略化しました。

編集者 Hiro (2019-04-08 12:56:54)

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer