标题:[求助]如何从文本框中输入出生日期及自动求出当前年龄(岁数)?
只看楼主
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
得分:0 
以下是引用qwaszwc在2007-10-21 12:55:49的发言:

关键是text1文本框的输入过程,我在其他应用程序中见过很多,都是直接输入如:"19780512",显示"1978-05-12",不可能再按其他按钮的.
我的教材上只有Date()函数"返回系统当前日期",Int()函数"正数取整",不知前面加上"C"什么意思?

既然你要那种类\效果,那你就放在private sub text1_change()里咯.
我那代码只是个参考,具体怎么用你自己抓主意.


Repeat  Life=Study;Until (death);
2007-10-21 14:29
那边有朵蘑菇云
Rank: 1
来 自:很……那啥的一个地方
等 级:新手上路
威 望:1
帖 子:390
专家分:0
注 册:2007-9-3
得分:0 
同意LS上的代码
哇哈哈

身不残 志更不坚
2007-10-22 12:00
qwaszwc
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-9-29
得分:0 
放在private sub text1_change()里确实麻烦.
最好是放在text1_lostFocus()里,上述代码极具建设性.确实可行,但不太直观.不知有没有占位符之类的东西可以解决?

2007-10-23 07:19
心中有剑
Rank: 2
等 级:新手上路
威 望:5
帖 子:611
专家分:0
注 册:2007-5-18
得分:0 
[CODE]


Const conDateInterval = "/"
Const conDateFormat = "yyyymmdd"
Const conDateFormat1 = "####/##/##"


Private Sub Form_Load()
Text1 = ""
Text2 = 0
Text1.MaxLength = 10
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
Text2.SetFocus
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
If KeyAscii <> vbKeyBack And KeyAscii <> 47 And KeyAscii <> 45 Or KeyAscii = vbKeyReturn Then KeyAscii = 0
End If
End Sub

Private Sub Text1_LostFocus()
If IsDate(ChangeDateFormat(Text1)) Then
Text1 = ChangeDateFormat(Text1)
Text2 = DateDiff("yyyy", Text1, Date)
Else
MsgBox "请输入正确的日期格式"
Text1.SetFocus
End If
End Sub
Private Function ChangeDateFormat(ByVal lsInputDate As String) As String
If Len(lsInputDate) >= 8 Then
If Len(lsInputDate) = 8 Then
lsInputDate = Left(lsInputDate, 4) & conDateInterval & Mid(lsInputDate, 5, 2) & conDateInterval & Right(lsInputDate, 2)
End If
If Len(lsInputDate) = 10 Then
If IsDate(lsInputDate) Then
If Format(lsInputDate, conDateFormat) <= Format(Date, conDateFormat) Then
ChangeDateFormat = Format(Format(lsInputDate, conDateFormat), conDateFormat1)
Else
ChangeDateFormat = lsInputDate
End If
Else
ChangeDateFormat = lsInputDate
End If
End If
Else
ChangeDateFormat = lsInputDate
End If
End Function

[/CODE]

2007-10-23 09:22
xlin1033xl
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:160
专家分:129
注 册:2007-6-24
得分:0 
使用vb自带的DTPicker控件
年数=(date-DTPicker.value)/365
这里当然会有误差,假设某人能活100岁,其中闰年的年份不超过100,也就是四个月,也就是不会超过1年,可以忽略不计

-------------程序*酒*人生
2007-10-23 14:29
qwaszwc
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-9-29
得分:0 
效果差不多,看来也只能这样了.

2007-10-23 18:35
qwaszwc
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-9-29
得分:0 
Private Sub Text1_Change()
If Len(Text1.Text) = 4 Then
Text1.Text = Text1.Text & "-"
Text1.SelStart = Len(Text1.Text)
End If
If Len(Text1.Text) = 7 Then
Text1.Text = Text1.Text & "-"
Text1.SelStart = Len(Text1.Text)
End If
End Sub
放上这段代码就完美了.

2007-10-23 18:51
王俊GXB
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-10-8
得分:0 
不懂  我只是一个初学者  看哪个东西一点都看不懂
2014-10-08 10:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-179181-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.232976 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved