Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: прога, определяющая возраст Добавлено: 04.03.07 21:44  

Автор вопроса:  Alias
подскажите код программы, которая определяла бы возраст человека по дате рождения

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #1
Добавлено: 04.03.07 23:43
Function CalcAge(datEmpDateOfBirth As Variant) As Integer
    CalcAge = Int(DateDiff("y", CDate(datEmpDateOfBirth), Date) / 365.25)
End Function

Ответить

Номер ответа: 2
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #2
Добавлено: 05.03.07 10:27
____ А зачем делить на 365,25?
____ Если хотелось выразить в целых годах, то для "очень старых" объектов это не верно.
____ А что, DateDiff() напрямую по годам не работает?

Ответить

Номер ответа: 3
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #3 Добавлено: 05.03.07 12:56
а старые это сколько

Ответить

Номер ответа: 4
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #4
Добавлено: 05.03.07 13:36
____ Больше 400 лет.

Ответить

Номер ответа: 5
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #5
Добавлено: 05.03.07 14:03
У меня таких друзей, со стажем нет...
А что, DateDiff() напрямую по годам не работает?

Все зависит от задачи лично мне для предупреждения о дате рождения хватает моей функции.
Function CalcAge(DateOfBirth As Variant) As Variant
    CalcAge = Int(DateDiff("y", CDate(DateOfBirth), Date) / 365.25)
    Dim Nd As Integer
    DimAs Integer
    № = CalcAge
    If CalcAge = 0 Then
       CalcAge = "первый год"
       Exit Function
    End If
    If CalcAge = 100 Then
        CalcAge = CalcAge & "лет"
        Exit Function
    End If
    Nd = Right(CalcAge, 1)
    If Nd = 1 Then
       CalcAge = CalcAge & " год"
       Exit Function
    End If
    If Nd = 1 Then
       CalcAge = CalcAge & " год"
       Exit Function
    End If
    If № < 10 Then
        If Nd <= 4 Then CalcAge = CalcAge & " года"
    End If
    If № > 20 Then
         If Nd <= 4 Then CalcAge = CalcAge & " года"
    End If
    If № < 10 Then
          If Nd > 4 Then CalcAge = CalcAge & " лет"
    End If
    If № < 20 Then
       If № < 9 Then Exit Function
       If Nd > 0 Then CalcAge = CalcAge & " лет"
    End If
    If № > 19 Then
      If Nd > 4 Then CalcAge = CalcAge & " лет"
       If Nd = 0 Then CalcAge = CalcAge & " лет"
    End If
End Function

Private Sub Command1_Click()
Form1.Caption = CalcAge("09.05.1945";)
End Sub

Вот полный код

Ответить

Номер ответа: 6
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #6
Добавлено: 06.03.07 20:41
Смотрю интерес не ослабевает, вот вам моя версия
мастера заполнения + дата дня рождения.
http://rus-skipper.narod.ru/raznoe/Dat.zip
если кому нужно, вышлю исходник.

Ответить

Номер ответа: 7
Автор ответа:
 Alias



Вопросов: 8
Ответов: 15
 Профиль | | #7 Добавлено: 11.03.07 19:46
хотя может показаться и приметивно но я делаю так:
Private Sub CommandButton1_Click()
Dim &#241;, &#239;&#238;, kolvo As Variant '
Dim b, c, a, e, f, r, Vozrast As Integer
a = Int(TextBox2.Text)
e = Int(TextBox9.Text)
r = Int(TextBox14.Text)
b = Year(Date)
c = Month(Date)
f = Day(Date)
If c > e Then
Vozrast = Str(b - a)
TextBox13.Text = Vozrast
Else
Vozrast = Str(b - a - 1)
TextBox13.Text = Vozrast
End If
If c >= e Then
If f > r Then
Vozrast = Str(b - a)
TextBox13.Text = Vozrast
Else
Vozrast = Str(b - a - 1)
TextBox13.Text = Vozrast
End If
If c >= e Then
If f >= r Then
Vozrast = Str(b - a)
TextBox13.Text = Vozrast
Else
Vozrast = Str(b - a - 1)
TextBox13.Text = Vozrast
End If
End If
End If

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам