以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何输入固定月日的日期?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83783)

--  作者:hyowl
--  发布时间:2016/4/16 16:56:00
--  如何输入固定月日的日期?
老师好!
如图,有两列数据,第一列是入学年份,因为入学总是9月1日,所以要求输入年份后,后面的月日能自动为09-01,如输入2011,则自动出现2011-09-01,另外,毕业日期为三年后的6月1日,那么输入入学日期后自动得到毕业日期。如入学日期是2011-09-01,则毕业日期自动填入:2014-06-01?

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160416162046.png
图片点击可在新窗口打开查看


--  作者:Hyphen
--  发布时间:2016/4/16 17:40:00
--  

KeyUpEdit事件


If e.Text  > "" Then

    StatusBar.Message2 = e.Text

    If e.Text.length = 5 Then

        e.Text = e.Text & "09-01"

        Sendkeys.Send("{TAB}")

    End If

End If


DataColChanged事件


If e.DataCol.Name = "入学日期" Then \'如果是已结帐列的内容变动
    e.DataRow("毕业日期") = new Date(e.NewValue.AddYears(3).year,6,1)
End If

--  作者:hyowl
--  发布时间:2016/4/17 20:38:00
--  
谢谢老师指点!我稍作了修改,这样对吗?

If e.Col.Name="入学时间" And e.Text > "" Then ’这里加了这一句,否则所有单元格的输入都自动生成“09-01”了
    StatusBar.Message2 = e.Text
    If e.Text.length = 5 Then
        e.Text = e.Text & "09-01"
        Sendkeys.Send("{TAB}")
    End If
End If

If e.DataCol.Name = "入学时间" Then \'如果是入学时间列的内容变动
    If e.DataRow.Isnull("入学时间") Then 
        e.DataRow("毕业时间")=Nothing
    Else    ‘这里也加了一句,否则把“入学时间”删除时会报错。
        e.DataRow("毕业时间") = new Date(e.NewValue.AddYears(3).year,6,1)
    End If
End If

--  作者:鲁吉
--  发布时间:2016/4/17 21:25:00
--  
看似正确,你测试下吧
--  作者:大红袍
--  发布时间:2016/4/17 21:46:00
--  
3楼代码没问题,如果报错,贴出对应的错误。