みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
後期高齢者になってだいぶ鈍くなっています。よろしくお願いいたします。
私も新年号問題で困っています。
見積書作成日、請求日、工事完了日、書類発送日などいくつかの日付けを
和暦で表示させています。
モナさんの「年号がかわったら」に対する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 を使用しています。
骨格がわかれば、残りは自己追加で、ということで、... の部分を同じように追加してもらえばいいのですが。
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 ( 日付 ) & "日"
Last edited by Shin (2019-04-04 10:08:56)
Offline
Shin様
早々に有りがとうございます。
Shinさんの方法とチポさんのやり方をコピーしてやってみましたが、
「指定されたフィールドが見つかりません。」とはねられました。
どこをどうすれば良いのでしょうか。
以下、コピペしてみてください。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 ( 日付 ) & "日"
)
別に、日付 というフィールドを作り、日付を設定します。
Offline
計算フィールドの計算結果はテキストですよ、日付ではダメです。
> 見積書作成日、請求日、工事完了日、書類発送日など
これらは入力用としてそのままにしておきます。
それぞれに対応する計算フィールドを作り表示用とします。
余談ですが、、
私も日付が入るファイルが相当あります。
今月から表示の元号をやめて西暦に統一しました。
Offline
別に、日付 というフィールドを作り、日付を設定します。
Shin様、やってみましたが
「このフィールドは変更禁止なので、この操作は実行できません。」と出ます。
札幌太郎さんのをコピペした場合も同じです。(フィールドに「?」が出ます)
これを解除する方法を教えて頂けますか。
計算フィールドの計算結果はテキストですよ、日付ではダメです。
チポ様、有りがとうございます。
テキストにしてみたら、日付フィールドに「令和?年?月?日」と
表示されました。(Shinさんの式です)
「このフィールドは変更禁止なので、……」触れません。
例えば、
請求日
を例に整理しますね。
請求日フィールド(日付)
これは入力用で、日付を入力します。
請求日表示用フィールド(計算・テキストタイプ)
これは上記の請求書フィールドに入力された日付を、
令和を含めた和暦に計算するフィールドで、
計算式はShinさんの式の
「日付」
を
「請求日」
に変更します。
他の日付のフィールドも同様に設定します。
Offline
チポ様、有りがとうございます。解決です。
私も半分諦めて、西暦表示にしようかと思いましたが
チポさんのやり方とShinさんの式で改元問題は解決
いたしました。
私の誕生日1941/01/04 と日付に入れますと
「昭和16年1月4日」出てうれしくなりました。
これから、工事完了日、書類発送日、等々間違えないように
書き換えていきます。
皆さん、有りがとうございます。
札幌太郎さんの提示されている式を使って、最初の 日付 = ... の部分に、工事完了日 などを当てはめて、日付 = テーブル::工事完了日 などをしておけば、そこを書き換えるだけで流用できます。
ただ、おすすめは、最新バージョンへの移行です。
Offline
札幌太郎さんの提示されている式を使って、最初の 日付 = ... の部分に、工事完了日 などを当てはめて、日付 = テーブル::工事完了日 などをしておけば、そこを書き換えるだけで流用できます。
ただ、おすすめは、最新バージョンへの移行です。
一件落着かと思ったのはつかの間で、日付フィールド一つではいろんな日付が同一化してしまい、
Shinさんのこの方法をやればと思いましたが、まろ爺の頭では、上手くいきません。
ちょっと収集が着かなくなったので、当面は西暦でいこうかと… …。
私の歳と商売の規模では、最新バージョンへの移行は高嶺の花です。
FileMaker Pro 12 Advanced を使用していますがAdvanced を活用できていません。
前に書いた通り、
日付入力フィールド一つずつに対応した表示用の計算フィールドが必要です。
Shinさんが書かれたのはその計算式作成の簡略法ですね。
Offline
Let (
[
日付 = 工事完了日 ;
令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
Year ( 日付 ) > Year ( 令和 ) ; "令和" & ( Year ( 日付 ) - Year ( 令和 ) + 1 ) ;
日付 >= 令和 ; "令和元" ;
YearName ( 日付 ; 0 )
)
) & ”年” & Month ( 日付 ) & "月" & Day ( 日付 ) & "日"
という式にしておいて、赤字の部分を、目的とする日付のフィールドに変更します。手間が省けますよ。
Offline
以下のようにやってみました。
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日と表示されて、うれしかったのですが、ファイルのあちこちが日付に蹂躙されてしまい、困ったことになりました。
今回、日付 = 完了日 ;や日付 = 完了日 ; を挿入すると、そのフィールドに 令和?年?月?日 と表示されて「このフィールドは変更禁止なので、この操作は実行できません。」と出ていじることができません。完了日 や 請求日 を指定して任意の日付を入れられるフィールドの作り方を、まろ爺にご指導ください。
回答とは違いますが、
Let式内変数の記述について、
規定の変数マーカ $ が不要な式内変数であっても、
敢えて私設マーカ(#変数、~変数など)を付けて、
式内変数の誤認なく式内見通しが良くなるよう、
私は努めています。
Offline
私がやりたいことを少し整理してみました。
「受注カード」レイアウトに「完了日入」フィールドを作り、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 ( 日付 ) & "日"
これを、どう編集すれば良いのか、「完了日入」や「請求日入」の式の書き方はなどです。
よろしくお願いいたします。
> 「受注カード」レイアウトに「完了日入」フィールドを作り、2019/04/04と入力すると、
> 「納品書」レイアウトの「完了日」フィールドに 平成31年 4月 4日、と表示されるようにしたいのです
この二つのレイアウトは同じテーブルですよね。
異なると新たな考えが必要になりますが、
同じとします。
採用された式は冗長すぎますよ、
Shinさんの#14の式から
完了日の計算式
Let (
[
#日付 = 完了日入 ;
#令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
Year ( #日付 ) > Year ( #令和 ) ; "令和" & ( Year ( #日付 ) - Year ( #令和 ) + 1 ) ;
#日付 >= #令和 ; "令和元" ;
YearName ( #日付 ; 0 )
)
) & ”年” & Month ( #日付 ) & "月" & Day ( #日付 ) & "日"
でいいでしょう。
Offline
チポさんの教え通りやってみましたが、
) & ”年” & Month ( #日付 ) & "月" & Day ( #日付 ) & "日"
~~~~
最後の行の#日付が反転して「指定されたフィールドが見つかりません。」と出て
OKできません。
全角、半角の違いとか、なんかゴミが付いているのでは。
最初の
> #日付 = 完了日入
これから
コピペすれば間違いないでしょう。
Offline
「#日付」はLet内で有効な変数なので、Let() 内に入れる必要があります。
Let (
[
#日付 = 完了日入 ;
#令和 = Date ( 5 ; 1 ; 2019 )
] ;
Case (
Year ( #日付 ) > Year ( #令和 ) ; "令和" & ( Year ( #日付 ) - Year ( #令和 ) + 1 ) ;
#日付 >= #令和 ; "令和元" ;
YearName ( #日付 ; 0 )
)
& ”年” & Month ( #日付 ) & "月" & Day ( #日付 ) & "日"
)
Offline
ああ、見落としていました。
その通りです、
)
の位置に注意してください。
Offline
解決です。チポさん、aliasさん、Shinさん、ほかの皆さん。
脳みその溶けかけた私に、辛抱強く付き合って下さった皆さん。有りがとうございます。
あとは、たくさんある日付フィールドを一つずつ直していくだけです。
うれしくなって、お祝いに最新バージョンを買いたくなった気分ですが、
それでは意味ないか。冗談でなく感謝感謝です。
まろ爺です。教えて頂いた
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日 のように一桁の数字には半角空白が入るようにするには、上記の式をどう編集すれば良いのでしょうか。
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)
];
#年&"年" & #月&"月" & #日&"日"
)
【式の修正履歴】
式の一部(打消し線部分)を等価短縮して少しだけ簡略化しました。
Last edited by Hiro (2019-04-08 12:56:54)
Offline
[ Generated in 0.007 seconds, 10 queries executed - Memory usage: 593.46 KiB (Peak: 630 KiB) ]