Foxtable(狐表)用户栏目专家坐堂 → 如何查出日期列中缺少的日期


  共有1695人关注过本帖树形打印复制链接

主题:如何查出日期列中缺少的日期

帅哥哟,离线,有人找我吗?
ZJZK2018
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
如何查出日期列中缺少的日期  发帖心情 Post By:2018/11/30 20:11:00 [只看该作者]

一个监理日记表中有个日期列,应该是不能间断的,如何查出日期列中缺少的日期,如果开始日期为2018-05-20,到今天为止如2018-11-30,其中缺少日期提取出来?


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/30 20:41:00 [只看该作者]

按日期排序,然后循环每一行判断。比如第一行日期等于【某个日期】,那么第二行的日期应该就等于【某个日期+1】,以此类推。

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/11/30 22:41:00 [只看该作者]

下面代码虽已达到效果,但感觉代码有点复杂,能否帮我优化一下

Dim lst As new List(of Date)
Dim st As String
For Each dt As Row In Tables("表A").Rows
    If lst.Contains(dt("施工日期")) = False Then
        lst.Add(dt("施工日期"))
    End If
Next
lst.Sort()
Dim t As TimeSpan = lst(lst.Count -1) - lst(0)
For i As Integer = 0 To t.TotalDays
    Dim tt As Date = lst(0).AddDays(i)
    If lst.Contains(tt) = False Then
        st = st & vbcrlf & tt
    End If
Next
e.Form.Controls("Label1").text = st


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


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/30 23:13:00 [只看该作者]

Tables("表A").Sort = "施工日期"

Dim d As Date = Tables("表A").Rows(0)("施工日期")
Dim st As String
For i As Integer = 1 To Tables("表A").Rows.Count - 1
    Dim r As Row = Tables("表A").Rows(i)
    d = d.AddDays(1)
    If d < r("施工日期") Then
        Do While d < r("施工日期")
            st = st & vbcrlf & d
            d = d.AddDays(1)
        Loop
    End If
Next
e.Form.Controls("Label1").text = st

 回到顶部