Foxtable(狐表)用户栏目专家坐堂 → 第一天值班人员,自动显示为上个月的最后一天值班人员的后一天值班人员,这个代码应该如何写?


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

主题:第一天值班人员,自动显示为上个月的最后一天值班人员的后一天值班人员,这个代码应该如何写?

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
第一天值班人员,自动显示为上个月的最后一天值班人员的后一天值班人员,这个代码应该如何写?  发帖心情 Post By:2020/3/31 10:50:00 [只看该作者]

DataTables("经理值班表").DataRows.Clear()
Dim y As Integer = e.Form.Controls("ComboBox1").value
Dim m As Integer = e.Form.Controls("ComboBox2").value
Dim k As String = e.Form.Controls("ComboBox3").value
Dim days As Integer = Date.DaysInMonth(y,m)
Dim nms() As String = {"张三","李四","王五","陈六","赵七","刘八"}
Dim idx As Integer = Array.IndexOf(nms,k)
Dim jh As New List(of String)
If idx =-1 Then
    jh.AddRange(nms)
Else
    For i As Integer = idx To nms.Length - 1
        jh.Add(nms(i))
    Next
    For i As Integer = 0 To idx-1
        jh.Add(nms(i))
    Next
End If

Tables("经理值班表窗口_经理值班表").AddNew()
For d As Integer = 1 To days
    Dim v As Date = new Date(y,m,d)
    Dim w As Integer = v.DayOfWeek
    Tables("经理值班表窗口_经理值班表").Current(w) = Format(d,"00") & " " &  jh(((d - 1) Mod 6))
    If w = 6 Then
        Tables("经理值班表窗口_经理值班表").AddNew()
    End If
Next

以上是用按钮生成的值班表代码;

求:
“经理值班表窗口”打开后,
1、自动显示“当前月份的日历布局”;
2、且第一天值班人员,自动显示为上个月的最后一天值班人员的后一天值班人员,这个代码应该如何写?


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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/31 15:04:00 [只看该作者]

DataTables("经理值班表").DataRows.Clear()
Dim y As Integer = e.Form.Controls("ComboBox1").value
Dim m As Integer = e.Form.Controls("ComboBox2").value
Dim k As String = e.Form.Controls("ComboBox3").value
'Dim days As Integer = Date.DaysInMonth(y,m)
Dim nms() As String = {"张三","李四","王五","陈六","赵七","刘八"}
Dim idx As Integer = Array.IndexOf(nms,k)
Dim jh As New List(of String)
If idx =-1 Then
    jh.AddRange(nms)
Else
    For i As Integer = idx To nms.Length - 1
        jh.Add(nms(i))
    Next
    For i As Integer = 0 To idx-1
        jh.Add(nms(i))
    Next
End If

Dim t As Table = Tables("经理值班表窗口_经理值班表")
Dim d As Date = new Date(y,m,1)
Dim d2 As Date = d.AddMonths(1)
Dim r As Row
If d.DayOfWeek <> 0
    r = t.AddNew()
End If

Do While d < d2
    Dim w As Integer = d.DayOfWeek
    If w = 0 Then r = t.AddNew()
    r(w) = Format(d.Day,"00") & jh((d.day - 1) Mod 6)
    d=d.AddDays(1)
Loop

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)DataTables("经理值班表").DataRows....  发帖心情 Post By:2020/3/31 15:54:00 [只看该作者]

1、点击绿色按钮后,弹出错误窗口,是用DrawCell方法的红色,标记出当天所在的单元格,”?

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

2、您上面提供的代码,我带入到窗口的AfterLoad事件后,但是进入下个月后,第一个值班名字还是没有变成“上个月的最后一人的下一个”?

具体测试步骤是:

先确认本月最后一人名字,
再将电脑的日期修改为下月第一天。

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



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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/31 16:37:00 [只看该作者]

1、
r(w) = Format(d.Day,"00") & jh((d.day - 1) Mod 6)
改为
r(w) = Format(d.Day,"00") & " " & jh((d.day - 1) Mod 6)


2、在清空旧数据之前,先获取值班表最后一行最后一个有值的单元格的数据,提取里面的人名作为“上个月的最后一人

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)1、r(w) = Format(d.Day,"00") &...  发帖心情 Post By:2020/3/31 16:45:00 [只看该作者]

2/如何提取?
能直接在上传的项目中修改吗?


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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/31 16:54:00 [只看该作者]

最后一行数据会取吗?
从这一行第一列开始判断每个单元格有没有值会吗?

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)最后一行数据会取吗?从这一行第一列...  发帖心情 Post By:2020/3/31 17:22:00 [只看该作者]

话说,真心不会呢!图片点击可在新窗口打开查看图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/31 17:31:00 [只看该作者]

最后一行
dim r as row = tables("表A").rows(tables("表A").rows.count - 1)

取最后一个人
Dim k As String
For i As Integer = 0 To Tables("表A").cols.count - 1
    If r.isnull(i) = False Then
        k = r(i)
    Else
        Exit For
    End If
Next
msgbox(k)

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


加好友 发短信
等级:四尾狐 帖子:895 积分:8183 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)最后一行dim r as row = tables("表A...  发帖心情 Post By:2020/4/1 16:45:00 [只看该作者]

1、标记单元格颜色是没问题了,但是,每次打开值班表窗口后,都会出现一个蓝色背景的单元格,这个颜色怎么去掉?或者,直接定位到当前日期的单元格中?

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


2、提取上个月最末一人的信息,代码写入后,本月初第一人的信息居然和上个月同名?
求指正?
最好是直接在项目中修改上传?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:值班表cs2.foxdb



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


加好友 发短信
等级:超级版主 帖子:105473 积分:536350 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/2 9:01:00 [只看该作者]

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



 回到顶部