以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  日期选择  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=73747)

--  作者:xiaohuli
--  发布时间:2015/8/25 19:59:00
--  日期选择
表a中有一个开始日期和结束日期,希望能实现开始日期和结束日期不跨月,当选择开始日期是8月的日期的时候,那么结束日期也只能选择8月的日期,不能选择其他的日期,这个控制应该怎么实现。
--  作者:大红袍
--  发布时间:2015/8/25 20:06:00
--  

 

[此贴子已经被作者于2015/8/25 20:06:49编辑过]

--  作者:大红袍
--  发布时间:2015/8/25 20:08:00
--  

DataColChanging事件


If e.DataCol.Name = "结束日期" AndAlso e.newvalue <> Nothing Then
    If Format(e.DataRow("开始日期"), "yyyyMM") <> Format(e.NewValue, "yyyyMM") Then
        e.cancel = True
    End If
End If


--  作者:xiaohuli
--  发布时间:2015/8/25 20:19:00
--  
老师,用了你的代码后,结束日期中直接连日期都输入不进去了,不管是不是跨月的日期都输入后,点击其他控件后,结束日期的值就不在了。
--  作者:大红袍
--  发布时间:2015/8/25 20:20:00
--  

看懂代码,先输入开始时间

 


--  作者:xiaohuli
--  发布时间:2015/8/28 10:12:00
--  

老师,现在是这样的,当已经输入了开始日期,然后输入结束日期的时候进行判断,如果输入的结束日期跨月了,然后给出一个日期跨月的提示,当点击是的时候就不清空选择的值,如果点击否,就清空选择的结束日期。如果开始日期没输入,进行输入结束日期,然后在输入开始日期的时候进行判断,日期是否跨月了,然后也是给出跨月的提示。


--  作者:大红袍
--  发布时间:2015/8/28 10:20:00
--  

If e.DataCol.Name = "结束日期"  Then
    If e.NewValue <> Nothing AndAlso e.DataRow.IsNull("开始日期") = False
        If Format(e.DataRow("开始日期"), "yyyyMM") <> Format(e.NewValue, "yyyyMM") Then
            Dim result As DialogResult =  MessageBox.Show("是否跨月?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If result = DialogResult.No Then
                e.cancel = True
            End If
        End If
    End If
End If

If e.DataCol.Name = "开始日期"  Then
    If e.NewValue <> Nothing AndAlso e.DataRow.IsNull("结束日期") = False
        If Format(e.DataRow("结束日期"), "yyyyMM") <> Format(e.NewValue, "yyyyMM") Then
            Dim result As DialogResult =  MessageBox.Show("是否跨月?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If result = DialogResult.No Then
                e.cancel = True
            End If
        End If
    End If
End If


--  作者:xiaohuli
--  发布时间:2015/9/18 14:57:00
--  

老师,目前在下面这个代码的基础上还得要判断出开始日期不能大于结束日期,如果开始日期大于结束日期,那么就清空。开始日期和结束日期上都需要判断。


If e.DataCol.Name = "结束日期"  Then
    If e.NewValue <> Nothing AndAlso e.DataRow.IsNull("开始日期") = False
        If Format(e.DataRow("开始日期"), "yyyyMM") <> Format(e.NewValue, "yyyyMM") Then
            Dim result As DialogResult =  MessageBox.Show("是否跨月?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If result = DialogResult.No Then
                e.cancel = True
            End If
        End If
    End If
End If

If e.DataCol.Name = "开始日期"  Then
    If e.NewValue <> Nothing AndAlso e.DataRow.IsNull("结束日期") = False
        If Format(e.DataRow("结束日期"), "yyyyMM") <> Format(e.NewValue, "yyyyMM") Then
            Dim result As DialogResult =  MessageBox.Show("是否跨月?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If result = DialogResult.No Then
                e.cancel = True
            End If
        End If
    End If
End If


--  作者:大红袍
--  发布时间:2015/9/19 10:18:00
--  

那你就加上呗,如

 

If e.DataRow("开始日期") > e.NewValue Then

    msgbox("结束日期不能早于开始日期")

    e.Cancel = True

Else

   If Format(e.DataRow("开始日期"), "yyyyMM") <> Format(e.NewValue, "yyyyMM") Then