以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  第一天值班人员,自动显示为上个月的最后一天值班人员的后一天值班人员,这个代码应该如何写?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148101)

--  作者:fengwenliuyan
--  发布时间: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、且第一天值班人员,自动显示为上个月的最后一天值班人员的后一天值班人员,这个代码应该如何写?


--  作者:有点蓝
--  发布时间: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
--  发布时间:2020/3/31 15:54:00
--  回复:(有点蓝)DataTables("经理值班表").DataRows....
1、点击绿色按钮后,弹出错误窗口,是用DrawCell方法的红色,标记出当天所在的单元格,”?

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

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

具体测试步骤是:

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

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



--  作者:有点蓝
--  发布时间: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
--  发布时间:2020/3/31 16:45:00
--  回复:(有点蓝)1、r(w) = Format(d.Day,"00") &...
2/如何提取?
能直接在上传的项目中修改吗?


--  作者:有点蓝
--  发布时间:2020/3/31 16:54:00
--  
最后一行数据会取吗?
从这一行第一列开始判断每个单元格有没有值会吗?

--  作者:fengwenliuyan
--  发布时间:2020/3/31 17:22:00
--  回复:(有点蓝)最后一行数据会取吗?从这一行第一列...
话说,真心不会呢!图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:有点蓝
--  发布时间: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
--  发布时间:2020/4/1 16:45:00
--  回复:(有点蓝)最后一行dim r as row = tables("表A...
1、标记单元格颜色是没问题了,但是,每次打开值班表窗口后,都会出现一个蓝色背景的单元格,这个颜色怎么去掉?或者,直接定位到当前日期的单元格中?

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


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



--  作者:有点蓝
--  发布时间:2020/4/2 9:01:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:值班表cs2.zip