以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114200)

--  作者:13775189031
--  发布时间:2018/1/31 15:36:00
--  求助
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "到货_第一批到货数量","到货_第二批到货数量","到货_第三批到货数量","到货_第四批到货数量"
        dr("到货数量") = dr("到货_第一批到货数量") + dr("到货_第二批到货数量") + dr("到货_第三批到货数量")+ dr("到货_第四批到货数量")
    Case "要求到货日期","数量"
        Dim tp As TimeSpan = CDate(e.DataRow("要求到货日期"))-Date.today
        If dr.IsNull("要求到货日期") Then
            dr("倒计时天数") = Nothing
        Else
            dr("倒计时天数") =tp.TotalDays
        End If
End Select

请教各位大神:
根据第一批、第二批、第三批、第四批到货数量相加得到到货数量
根据要求到货日期计算到今天位置倒计时天数
现在想要:当到货数量等于要求数量时,倒计时天数列显示“已完成”,到货数量不足时显示倒计时天数该怎么弄?


--  作者:有点甜
--  发布时间:2018/1/31 15:40:00
--  

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "到货_第一批到货数量","到货_第二批到货数量","到货_第三批到货数量","到货_第四批到货数量"
        dr("到货数量") = dr("到货_第一批到货数量") + dr("到货_第二批到货数量") + dr("到货_第三批到货数量")+ dr("到货_第四批到货数量")
    Case "要求到货日期","数量"
        If dr("数量") = dr("到货数量") Then
            dr("倒计时天数") = "已完成"
        Else
            Dim tp As TimeSpan = CDate(e.DataRow("要求到货日期"))-Date.today
            If dr.IsNull("要求到货日期") Then
                dr("倒计时天数") = Nothing
            Else
                dr("倒计时天数") =tp.TotalDays
            End If
        End If
End Select


--  作者:13775189031
--  发布时间:2018/1/31 16:40:00
--  
.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2017.10.26.1
错误所在事件:表,外协详单,DataColChanged
详细错误信息:
调用的目标发生了异常。
输入字符串的格式不正确。不能在 倒计时天数 列中存储 <已完成>。所需类型是 Int32。
输入字符串的格式不正确。


--  作者:13775189031
--  发布时间:2018/1/31 16:41:00
--  
是不是倒计时天数是整数,“已完成”是字符,所以有问题
--  作者:有点甜
--  发布时间:2018/1/31 16:52:00
--  
以下是引用13775189031在2018/1/31 16:40:00的发言:
.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2017.10.26.1
错误所在事件:表,外协详单,DataColChanged
详细错误信息:
调用的目标发生了异常。
输入字符串的格式不正确。不能在 倒计时天数 列中存储 <已完成>。所需类型是 Int32。
输入字符串的格式不正确。

 

1、你可以把列改成字符列;

 

2、你可以在drawcell事件写代码

 

Dim dr As Row = e.Row
Select Case e.col.Name
    Case "倒计时天数"
        If dr("数量") = dr("到货数量") Then
            e.text = "已完成"
        Else
            Dim tp As TimeSpan = CDate(dr("要求到货日期"))-Date.today
            If dr.IsNull("要求到货日期") Then
                e.text = Nothing
            Else
                e.text = tp.TotalDays
            End If
        End If
End Select

 


--  作者:13775189031
--  发布时间:2018/2/1 11:07:00
--  
试了一下drawcell,现在空行也会显示“已完成”,以为是空行的数量和到货数量都返回零值,所以改成数量﹤到货数量+1,还是不行!
--  作者:13775189031
--  发布时间:2018/2/1 11:10:00
--  
把到货数量进行了空值判断也不行图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2018/2/1 11:41:00
--  

Dim dr As Row = e.Row
Select Case e.col.Name
    Case "倒计时天数"
        If dr("到货数量") <> nothing AndAlso dr("数量") = dr("到货数量") Then
            e.text = "已完成"
        Else
            If dr.IsNull("要求到货日期") Then
                e.text = Nothing
            Else

                Dim tp As TimeSpan = CDate(dr("要求到货日期"))-Date.today
                e.text = tp.TotalDays
            End If
        End If
End Select


--  作者:13775189031
--  发布时间:2018/2/1 12:04:00
--  
谢谢!太感谢了!!图片点击可在新窗口打开查看图片点击可在新窗口打开查看