以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  日期判断代码求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11124)

--  作者:红叶
--  发布时间:2011/7/8 14:59:00
--  日期判断代码求助

表A 有“商品代码”“起始日期”“终止日期”三列

需要在表A的DataColChanging中输入“起始日期”时判,不能小于等于相同的“商品代码”的最大“起始日期”

我做了这样的代码,却无论输入大于或小于等于相同的“商品代码”的“起始日期”都不对

Select Case e.DataCol.Name
    Case "起始日期"
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        \'cmd.C \'如果使用外部数据源需指明数据源名称
        cmd.CommandText = "SELECT MAX(终止日期) As 最大 From {表A} Where 商品代码 =\'" & e.DataRow("商品代码") & "\'" \'SQL改#为\'
        dt = cmd.ExecuteReader()
        If dt.DataRows.Count > 0 Then
            If e.DataRow("起始日期")<=CDate(dt.DataRows(0)("最大")) Then
                e.Cancel = True \'取消变动.
                Messagebox.Show("你输入的起始日期晚于上期的终日期,请重新输入!","提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End If
End Select

表结构

 

 


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

--  作者:狐狸爸爸
--  发布时间:2011/7/8 15:04:00
--  

e.datarow("起始日期")是不对的,应该用e.NewValue

 

请仔细看一下DataColChanging事件的说明:

 

http://help.foxtable.com/topics/0624.htm