2017-05-04 66 views
1

如何在If else條件中使用DateTimePicker,因爲我想要捕獲此問題。如果用戶輸入他的生日01/01/2003,則系統必須阻止其進行。如何根據DateTime Picker上的輸入獲取員工的年齡

即使此代碼有效,它也不允許有人在01/01/1997出生被添加。

代碼:

ElseIf datepickerBirthday.Value < Date.Now Then 
    MessageBox.Show("Minors are not allowed, according to the law", 
        "XYZ Auto Repair System", 
        MessageBoxButtons.OK, 
        MessageBoxIcon.Error)` 
+0

也許這個問題會幫助你的解決方案:https://stackoverflow.com/questions/618878 /如何比較剛剛日期的部分和不是兩個日期的時間 – muffi

+0

您可以添加/減去日期時間等。因此,我要做的第一步是定義用戶必須達到18歲的最低生日(21日在您的國家?):'Dim minbirthday = DateTime.Now.AddYears(-18)'。然後做你的支票:'如果datepickerBirthday.Value

+0

好吧,但我怎麼能應用這個。我是否需要爲日期創建變量? – Alastair23

回答

1

例子是很好,但實際上你需要告訴我們的規則是什麼。你說:

如果用戶鍵入他的生日01/01/2003系統必須阻止它 繼續進行。

好的,爲什麼?你需要捕捉它的是什麼規則呢?在此基礎上:

未成年人是不允許的,依法

我假設你真正想要什麼,而不是讓員工的年齡,僅僅是爲了檢查是否僱員至少18歲。如果那就是你想要的那麼那就是你應該說的。我們不應該這樣做。如果是這樣的話,那麼你需要檢查Value是否小於今天的日期減去18年,而不是當前的日期和時間,即

ElseIf datepickerBirthday.Value.Date < Date.Today.AddYears(-18) Then 

注意,所提供的代碼是怎麼回事,如果出生日期告訴你指定使該人18歲或以上。如果你想要在18歲以下,然後反轉條件。

+0

事實上,正如我基於這種情況時,用戶不小心鍵入上述日期。 – Alastair23

+0

謝謝,但是接下來會發生什麼[link](http://i.imgur.com/RMLxVyt.png) – Alastair23

+0

沒關係,我對解決方案做了一些更改ElseIf DateTime.Today.Year - datepickerBirthday.Value .Year <18 = True然後 MessageBox.Show(「根據法律不允許未成年人」,「XYZ汽車修理系統」,MessageBoxButtons.OK,MessageBoxIcon.Error) – Alastair23

1

試試這個

ElseIf DateTime.Today.Year - datepickerBirthday.Value.Year < 18 Then 
MessageBox.Show("Minors are not allowed, according to the law", 
       "XYZ Auto Repair System", 
       MessageBoxButtons.OK, 
       MessageBoxIcon.Error) 
+0

非常感謝!並且在答案中有一些變化,因爲它變成這樣ElseIf DateTime.Today.Year - datepickerBirthday.Value.Year <18 = True Then MessageBox.Show(「根據法律不允許未成年人」,「XYZ自動修復系統「,MessageBoxButtons.OK,MessageBoxIcon.Error) – Alastair23

+0

即使他們出生於12月31日,該代碼也會顯示18歲生日的全年有18歲。 – jmcilhinney

0

感謝jmcilhinney和Sowndara這裏是這個問題

ElseIf DateTime.Today.Year - datepickerBirthday.Value.Year < 18 = True Then 
      MessageBox.Show("Minors are not allowed, according to the law", "XYZ Auto Repair System", MessageBoxButtons.OK, MessageBoxIcon.Error) 
+0

該代碼表示​​某人爲18歲即使它們是在12月31日出生的,也是18歲生日的整整一年。同樣,與'True'的比較是沒有意義的,因爲'<'操作符已經返回一個'Boolean'。 – jmcilhinney

+0

好的,我現在明白了。 – Alastair23

相關問題