Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル勤続年数と退社
記事No172309
投稿日: 2018/07/03(Tue) 14:49
投稿者takump
解決済: ON
OS:windows10
Access Version:2016

[トグル83] を“退社”のトグルボタンとして、以下の式をテキストボックス[勤続年数]に設定しました。
トグルボタンを押してあるときは入社年月日から退社年月日までの勤続年数を、
トグルボタンを押してないときは入社年月日から現在までの勤続年数を表示させたいのですが
押してないときには“年”しか表示されません。
それぞれを単独で設定すると表示はされるのですがどこにまちがいがあるかご教示いただけないでしょうか。

=IIf([トグル83],IIf(IsDate([退社年月日]),IIf(Format(CDate([入社年月日]),"mm/dd")>Format(CDate([退社年月日]),"mm/dd"),DateDiff("yyyy",CDate([退社年月日]),CDate([入社年月日]))-1,DateDiff("yyyy",CDate([入社年月日]),CDate([退社年月日]))),Null) & "年",IIf(IsDate([入社年月日]),IIf(Format(CDate([入社年月日]),"mm/dd")>Format(Date(),"mm/dd"),DateDiff("yyyy",CDate([入社年月日]),Date())-1,DateDiff("yyyy",CDate([入社年月日]),Date())),Null) & "年")

タイトルRe: 勤続年数と退社
記事No172310
投稿日: 2018/07/03(Tue) 15:59
投稿者ナバ
解決済: ON
こんにちは。

> それぞれを単独で設定すると表示はされるのですが

単独で動作する式をそれぞれ提示してください。

タイトルRe^2: 勤続年数と退社
記事No172311
投稿日: 2018/07/03(Tue) 16:16
投稿者takump
解決済: ON
こんにちは。

一つは入社から現在までの式。
IIf(IsDate([入社年月日]),IIf(Format(CDate([入社年月日]),"mm/dd")>Format(Date(),"mm/dd"),DateDiff("yyyy",CDate([入社年月日]),Date())-1,DateDiff("yyyy",CDate([入社年月日]),Date())),Null) & "年"

それと入社から退社までです。
=IIf([トグル83],IIf(IsDate([退社年月日]),IIf(Format(CDate([入社年月日]),"mm/dd")>Format(CDate([退社年月日]),"mm/dd"),DateDiff("yyyy",CDate([退社年月日]),CDate([入社年月日]))-1,DateDiff("yyyy",CDate([入社年月日]),CDate([退社年月日]))),Null) & "年"

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

タイトルRe^3: 勤続年数と退社
記事No172312
投稿日: 2018/07/03(Tue) 16:48
投稿者ナバ
解決済: ON
そもそもですが、この式だと、
入社年月日:2016/04/01
退社年月日:2018/3/31
のとき、勤続年数が「-3年」になりませんか?

タイトルRe^4: 勤続年数と退社
記事No172313
投稿日: 2018/07/03(Tue) 16:52
投稿者takump
解決済: ON
=IIf(IsDate([退社年月日]),IIf(Format(CDate([入社年月日]),"mm/dd")>Format(CDate([退社年月日]),"mm/dd"),DateDiff("yyyy",CDate([退社年月日]),CDate([入社年月日]))-1,DateDiff("yyyy",CDate([入社年月日]),CDate([退社年月日]))),Null) & "年"

動作を確認したうえで再度貼り付けます。
こちらだと正しい数字が表示されています。

タイトルRe^5: 勤続年数と退社
記事No172314
投稿日: 2018/07/03(Tue) 17:03
投稿者takump
解決済: ON
> =IIf(IsDate([退社年月日]),IIf(Format(CDate([入社年月日]),"mm/dd")>Format(CDate([退社年月日]),"mm/dd"),DateDiff("yyyy",CDate([退社年月日]),CDate([入社年月日]))-1,DateDiff("yyyy",CDate([入社年月日]),CDate([退社年月日]))),Null) & "年"
>
> 動作を確認したうえで再度貼り付けます。
> こちらだと正しい数字が表示されています。

その入力条件だとなりますね。。

タイトルRe^6: 勤続年数と退社
記事No172315
投稿日: 2018/07/03(Tue) 17:09
投稿者ナバ
解決済: ON
DateDiffで退社年月日と入社年月日の順序が逆のところがありますよ。

タイトルRe^7: 勤続年数と退社
記事No172316
投稿日: 2018/07/03(Tue) 17:13
投稿者ナバ
解決済: ON
それから、この式って誕生日の計算を基にしていませんか?
ご存知の通り、誕生日は当日が来ないと1歳になりませんが、
期間は通常、前日までいれば1年と数えるのでちょっと細工が必要ですね。

タイトルRe^8: 勤続年数と退社
記事No172317
投稿日: 2018/07/04(Wed) 11:40
投稿者ナバ
解決済: ON
これでどうでしょうか。
入社年月日を-1して、期間として求めるようにしています。
--------------------------------------
=IIf([トグル83],
  IIf(IsDate([退社年月日]),
    IIf(Format(CDate([入社年月日])-1,"mm/dd")>Format(CDate([退社年月日]),"mm/dd"),
      DateDiff("yyyy",CDate([入社年月日])-1,CDate([退社年月日]))-1,
      DateDiff("yyyy",CDate([入社年月日])-1,CDate([退社年月日]))
   ),Null)
,
  IIf(Format(CDate([入社年月日])-1,"mm/dd")>Format(Date(),"mm/dd"),
    DateDiff("yyyy",CDate([入社年月日])-1,Date())-1,
    DateDiff("yyyy",CDate([入社年月日])-1,Date()))
) & "年"

十分テストしてくださいね。

タイトルRe^9: 勤続年数と退社
記事No172318
投稿日: 2018/07/04(Wed) 11:43
投稿者takump
解決済: ON
ありがとうございます!
今日は一日外出していて試せませんが戻ったらテストさせて頂きます!

タイトルRe^9: 勤続年数と退社
記事No172326
投稿日: 2018/07/06(Fri) 10:53
投稿者takump
解決済: ON
ナバ様、ありがとうございます。
テストしてみましたが退社した者(トグル83がT/Nどちらでも、退社年月日の記入のある者)は入社から退社までの年数が出るようになったのですが
在籍している者(トグル83がT/Nどちらでも、退社年月日の記入のない者)は“年”しか表示されません。
どうしてかお分かりになるでしょうか。。

タイトルRe^10: 勤続年数と退社
記事No172327
投稿日: 2018/07/06(Fri) 11:10
投稿者ナバ
解決済: ON
> 在籍している者(トグル83がT/Nどちらでも、退社年月日の記入のない者)は“年”しか表示されません。

在籍している者=退社年月日が入力されていない者、ですね?
トグル83の判定が正しくできていますかね?

=IIf([トグル83],"あ","い")

として、思ったように認識されますか?

タイトルRe^11: 勤続年数と退社
記事No172328
投稿日: 2018/07/06(Fri) 11:22
投稿者takump
解決済: ON
ナバさま、ありがとうございます。

おっしゃる通りトグル81〜83がフレーム78のオプションとなっておりトグル83の値は3となっていました。
なのでIIf([フレーム78]=3,に書き換えてやっと正常に動作しました。

本当にありがとうございました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る