以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]单元格颜色报错求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127500)

--  作者:湛江智
--  发布时间:2018/11/15 14:21:00
--  [求助]单元格颜色报错求助

大师,如果要通过2列日期差,自动生成单元格样式

 


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

 

新增行时,创建日期自动录入今天的日期,日期列为空,报错如下图:

 

DrawCell  代码如下:

 

If e.Col.Name = "日期" Then

    If e.Row.IsNull("日期") = False Then

        If e.Row("日期") <= e.Row("创建日期").AddDays(-8) Then

            e.Style = "样式7"

        End If

        If e.Row("创建日期").AddDays(-7)  < e.Row("日期") And  e.Row("日期") < e.Row("创建日期").AddDays(-5) Then

            e.Style = "样式6"

        End If

        If e.Row("创建日期") <= e.Row("日期").AddDays(-4) Then
            e.Style = "提前5"
        End If

        If e.Row("日期").AddDays(-3)  < e.Row("创建日期") And  e.Row("创建日期") < e.Row("日期").AddDays(-1) Then

            e.Style = "提前2"

        End If

        If e.Row("日期").AddDays(-2)  < e.Row("创建日期") And  e.Row("创建日期") < e.Row("日期").AddDays(0) Then

            e.Style = "提前1"

        End If

End If

 


 


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


 


--  作者:xndd
--  发布时间:2018/11/15 14:23:00
--  
这个是日期值,不能这样比较的
--  作者:有点甜
--  发布时间:2018/11/15 14:24:00
--  

If e.Row.IsNull("日期") = False Then

 

改成

 

If e.Row.IsNull("日期") = False andalso e.row.isnull("创建日期") = false Then


--  作者:湛江智
--  发布时间:2018/11/15 14:31:00
--  回复:(有点甜)If e.Row.IsNull("日期") = False Th...

甜甜,辛苦再看看了

新增行时,创建日期自动录入今天的日期,还是报错 

 

加密狗不能升级了,高于2018-07-09版本打不开,不会意思哈

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:2.foxdb

[此贴子已经被作者于2018/11/15 15:10:42编辑过]

--  作者:有点甜
--  发布时间:2018/11/15 15:14:00
--  

If e.Col.Name = "日期" Then
    \'If e.Row.IsNull("日期") = False Then  \'这个是日期值,不能这样比较的
    If e.Row.IsNull("日期") = False AndAlso e.Row.isnull("创建日期") = False Then
        If e.Row("日期") <= e.Row("创建日期").AddDays(-8) Then
            e.Style = "样式7"
        End If
        If e.Row("创建日期").AddDays(-7)  < e.Row("日期") And  e.Row("日期") < e.Row("创建日期").AddDays(-5) Then
            e.Style = "样式6"
        End If
        If e.Row("创建日期").AddDays(-6)  < e.Row("日期") And  e.Row("日期") < e.Row("创建日期").AddDays(-4) Then
            e.Style = "样式5"
        End If
       
        If e.Row("创建日期").AddDays(-5)  < e.Row("日期") And  e.Row("日期") < e.Row("创建日期").AddDays(-3) Then
            e.Style = "样式4"
        End If
        If e.Row("创建日期").AddDays(-4)  < e.Row("日期") And  e.Row("日期") < e.Row("创建日期").AddDays(-2) Then
            e.Style = "样式3"
        End If
        If e.Row("创建日期").AddDays(-3)  < e.Row("日期") And  e.Row("日期") < e.Row("创建日期").AddDays(-1) Then
            e.Style = "样式2"
        End If
        If e.Row("创建日期").AddDays(-2)  < e.Row("日期") And  e.Row("日期") < e.Row("创建日期").AddDays(0) Then
            e.Style = "样式1"
        End If
       
        If e.Row("创建日期") <= e.Row("日期").AddDays(-4) Then
            e.Style = "提前5"
        End If
        If e.Row("日期").AddDays(-5)  < e.Row("创建日期") And  e.Row("创建日期") < e.Row("日期").AddDays(-3) Then
            e.Style = "提前4"
        End If
        If e.Row("日期").AddDays(-4)  < e.Row("创建日期") And  e.Row("创建日期") < e.Row("日期").AddDays(-2) Then
            e.Style = "提前3"
        End If
        If e.Row("日期").AddDays(-3)  < e.Row("创建日期") And  e.Row("创建日期") < e.Row("日期").AddDays(-1) Then
            e.Style = "提前2"
        End If
        If e.Row("日期").AddDays(-2)  < e.Row("创建日期") And  e.Row("创建日期") < e.Row("日期").AddDays(0) Then
            e.Style = "提前1"
        End If
    End If
End If

 


--  作者:湛江智
--  发布时间:2018/12/21 11:08:00
--  回复:(有点甜)If e.Col.Name = "日期" Then &...
 上面代码报错
未找到类型 string 的公共成员  adddays

换一种思路,实现。下面代码怎么修改呢?

Dim r As Row = Tables("工作日志").Current
If r IsNot Nothing Then
    If e.Col.Name = "日期" Then
        If e.Row.IsNull("日期") = False AndAlso e.Row.isnull("创建日期") = False Then
            Dim dt As Date = r("创建日期")
            Dim dtf As Date = r("日期")
            Dim n As Integer = (dtf - dt).TotalDays
            If n = -3  Then \'如果已经过期
                e.Style = "样式2"
            ElseIf n = -2  Then \'如果已经过期
                e.Style = "样式1"
            ElseIf n = -1  Then \'如果已经过期
                e.Style = "提前1"
            ElseIf n = 0 Then \'如果已经过期
                e.Style =  "提前2"
            ElseIf n = 1 Then \'如果已经过期
                e.Style = "提前3"
            ElseIf n = 2 Then \'如果已经过期
                e.Style = "提前4"
            ElseIf n = 3 Then \'如果已经过期
                e.Style = "提前5"
            End If
        End If
    End If
End If

--  作者:有点甜
--  发布时间:2018/12/21 11:13:00
--  
Dim r As Row = e.Row
If r IsNot Nothing Then
    If e.Col.Name = "日期" Then
        If e.Row.IsNull("日期") = False AndAlso e.Row.isnull("创建日期") = False Then
            Dim dt As Date = r("创建日期")
            Dim dtf As Date = r("日期")
            Dim n As Integer = (dtf - dt).TotalDays
            If n = -3  Then \'如果已经过期
                e.Style = "样式2"
            ElseIf n = -2  Then \'如果已经过期
                e.Style = "样式1"
            ElseIf n = -1  Then \'如果已经过期
                e.Style = "提前1"
            ElseIf n = 0 Then \'如果已经过期
                e.Style =  "提前2"
            ElseIf n = 1 Then \'如果已经过期
                e.Style = "提前3"
            ElseIf n = 2 Then \'如果已经过期
                e.Style = "提前4"
            ElseIf n = 3 Then \'如果已经过期
                e.Style = "提前5"
            End If
        End If
    End If
End If