Foxtable(狐表)用户栏目专家坐堂 → 甘特图多时间段问题


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

主题:甘特图多时间段问题

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
甘特图多时间段问题  发帖心情 Post By:2015/11/27 13:36:00 [只看该作者]

If DrawGannt Then
    Dim r As Row  = Tables("进口业务进度表").Rows(e.Row.Index)
    Dim dt1 As Date = r("到港日期")
    Dim dt2 As Date = r("换单商检")
    Dim dt3 As Date = r("报关日期")
    Dim dt4 As Date = r("送货日期")
    Dim dt As Date = e.Col.Name.Replace("年","-").Replace("月_","-")
    If dt>=dt1 AndAlso dt<=dt2 Then
        e.StartDraw()
        If dt < Date.Today Then
            e.Graphics.FillRectangle(Brushes.Green,e.x ,e.y + 5, e.Width, e.Height - 10)
        Else
            e.Graphics.FillRectangle(Brushes.Red,e.x ,e.y + 3, e.Width, e.Height - 7)
        End If
        e.EndDraw()
    End If
    If dt>=dt2 AndAlso dt<=dt3 Then
        e.StartDraw()
        If dt < Date.Today Then
            e.Graphics.FillRectangle(Brushes.Yellow,e.x ,e.y + 5, e.Width, e.Height - 10)
        Else
            e.Graphics.FillRectangle(Brushes.Red,e.x ,e.y + 3, e.Width, e.Height - 7)
        End If
        e.EndDraw()
    End If
    If dt>=dt3 AndAlso dt<=dt4 Then
        e.StartDraw()
        If dt < Date.Today Then
            e.Graphics.FillRectangle(Brushes.Blue,e.x ,e.y + 5, e.Width, e.Height - 10)
        Else
            e.Graphics.FillRectangle(Brushes.Red,e.x ,e.y + 3, e.Width, e.Height - 7)
        End If
        e.EndDraw()
    End If
End If

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2015/11/27 13:37:00 [只看该作者]

dt4的日期不输入无法画图

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2015/11/27 13:37:00 [只看该作者]


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

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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2015/11/27 13:37:00 [只看该作者]


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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 14:34:00 [只看该作者]

上面的代码没问题。

 

你右边的表,明细生成得不对,单元格就没有生成到最大的日期。


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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2015/11/27 15:32:00 [只看该作者]

Dim tbl As Table = Tables("进口业务进度表")
Tables("业务进程_Table2").StopRedraw()
Dim StartDate As Date = tbl.Compute("Min(到港日期)", "到港日期 IS NOT NULL")
Dim EndDate As Date = tbl.Compute("Max(送货日期)","送货日期 IS NOT NULL")
Dim dt As Date = StartDate
Dim Builder As New DataTableBuilder("统计")
Do
    Dim nm As String = dt.Year & "年" &  dt.Month & "月_" & dt.Day
    Builder.Adddef(nm,Gettype(String),1)
    dt = dt.Adddays(1)
    If dt > Enddate Then
            Exit Do
    End If
Loop
Tables("业务进程_Table2").DataSource = Builder.buildDataSource
For Each cl As Col In Tables("业务进程_Table2").Cols
    cl.width = 20
Next
Functions.Execute("AddGanttRows")
Tables("业务进程_Table2").ResumeRedraw()

是不是这个代码中漏掉中间2个时间的设置?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 15:58:00 [只看该作者]

类似代码,细节自己调整

 

Dim StartDate As Date
Dim EndDate As Date

 

Dim ary(3) As Date
ary(0) = tbl.Compute("Min(到港日期)", "到港日期 IS NOT NULL")
ary(1) = tbl.Compute("Min(到港日期)", "到港日期 IS NOT NULL")
ary(2) = tbl.Compute("Min(到港日期)", "到港日期 IS NOT NULL")
ary(3) = tbl.Compute("Min(到港日期)", "到港日期 IS NOT NULL")
array.sort(ary)
startDate = ary(0)

 

ary(0) = tbl.Compute("max(到港日期)", "到港日期 IS NOT NULL")
ary(1) = tbl.Compute("max(到港日期)", "到港日期 IS NOT NULL")
ary(2) = tbl.Compute("max(到港日期)", "到港日期 IS NOT NULL")
ary(3) = tbl.Compute("max(到港日期)", "到港日期 IS NOT NULL")
array.sort(ary)
EndDate = ary(ary.length-1)


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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2015/11/27 16:17:00 [只看该作者]


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

如何把当天的日期作为正在进行的时间段的Max日期,否则只有dt1的时候还是无法画出图来的。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/27 17:38:00 [只看该作者]

EndDate = ary(ary.length-1)

 

If EndDate < Date.Today Then

    EndDate = Date.Today

End If


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


加好友 发短信
等级:二尾狐 帖子:502 积分:3620 威望:0 精华:0 注册:2015/4/21 22:45:00
  发帖心情 Post By:2015/11/27 22:14:00 [只看该作者]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
谢谢老师
周末了 ,休息一下。

 回到顶部