以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]周期增加  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=123622)

--  作者:manyifuwu
--  发布时间:2018/8/19 17:31:00
--  [求助]周期增加
Dim dt As DataTable = DataTables("固定_table2")
Dim r As Row = Tables("客户资料").current
Dim sd As Date = r("开始日期")
Dim ed As Date = r("结束日期")
Dim d As Date = sd
Dim idx As Integer = 1
Dim month As Integer = d.Month - 1
Do While d <= ed
    If d.Month - month = 1 Then \'1月
        If d.DayOfWeek =r("周") Then
            If idx = r("周期") Then \'第几周
                output.show(d)
                Dim ndr = dt.addnew
                ndr("截止日期") = d
                ndr("编号") =r.DataRow("编号")
                month = d.month
                idx = 1
            Else
                idx += 1
            End If
        End If
    End If
    d = d.AddDays(1)
Loop

为什么1、选择日期18年10月至19年12月底,但只能生产18年12月底的订单。    只能添加开始日期当年的订单。??老师以上代码是那出错呢?

[此贴子已经被作者于2018/8/19 18:25:10编辑过]

--  作者:有点蓝
--  发布时间:2018/8/19 17:49:00
--  
看不懂你的逻辑,上传实例看看
--  作者:manyifuwu
--  发布时间:2018/8/19 18:21:00
--  [求助]周期增加
例如:要添加2018年7月1日至2019年7月1日,窗口按钮添加,只能增加到2018年底。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目6.foxdb


[此贴子已经被作者于2018/8/19 20:39:21编辑过]

--  作者:有点蓝
--  发布时间:2018/8/19 20:55:00
--  
Dim dt As DataTable = DataTables("派工")
Dim r As Row = Tables("客户资料").current
Dim sd As Date = r("开始日期")
Dim ed As Date = r("结束日期")
Dim d As Date = new Date(sd.Year,sd.Month,1)
Dim ndr As DataRow = dt.addnew
ndr("编号") =r.DataRow("编号")
Dim zq As Integer = r("周期")
Dim xq As Integer = r("周")
Dim dw As Integer = d.DayOfWeek
If dw = 0 Then dw = 7
Dim d1 As Date
If dw > xq Then
    d1= d.AddDays(7*zq - (dw - xq))
Else
    d1 = d.AddDays(xq - dw+7*(zq-1))
End If
If d1.Day < sd.Day Then
    d1 = d1.AddDays(Math.Ceiling((sd.Day - d1.Day) / 7) * 7)
End If
ndr("截止日期") = d1
d = d.AddMonths(1)

Do While d <= ed
    ndr = dt.addnew
    ndr("编号") =r.DataRow("编号")
    ndr("截止日期") = d
    dw  = d.DayOfWeek
    If dw = 0 Then dw = 7
    If dw > xq Then
        ndr("截止日期") = d.AddDays(7*zq - (dw - xq))
    Else
        ndr("截止日期") = d.AddDays(xq - dw+7*(zq-1))
    End If
    
    d = d.AddMonths(1)
Loop

--  作者:manyifuwu
--  发布时间:2018/8/26 20:50:00
--  
如果我想新增一个按钮。 固定增加:每月最后一个星期几?怎么写代码呢?
--  作者:有点甜
--  发布时间:2018/8/26 22:57:00
--  

参考代码

 

Dim y As Integer = 2018
Dim m As Integer = 8
Dim wd As Integer = 3 \'星期三
Dim d As Date = new Date(y,m,1)
d = d.AddMonths(1).AddDays(-1)
Do While True
    If d.DayOfWeek = wd Then
        msgbox(d)
        Exit Do
    End If
    d = d.AddDays(-1)
Loop


--  作者:manyifuwu
--  发布时间:2018/8/27 0:54:00
--  

Dim dt As DataTable = DataTables("固定_table2")
Dim r As Row = Tables("客户资料").current
Dim sd As Date = r("执行日期")
Dim ed As Date = r("到期日期")
Dim d As Date = sd
Dim y As Integer = 2018
Dim m As Integer = 8
Dim wd As Integer =r("周")  Then ’3 \'星期三
Dim d As Date = new Date(y,m,1)
d = d.AddMonths(1).AddDays(-1)
Do While True
    If d.DayOfWeek = wd Then
        msgbox(d)
        Exit Do
        ndr("日期") = d
        ndr("编号") =r.DataRow("编号")

       
       
    End If
    d = d.AddDays(-1)
Loop

抱歉不能举一反三。

客户资料表有三列“”周“执行日期”到期日期‘’列     派工表有两列: 日期 列   和  编号 列  。希望通过按钮代码,添加执行日期和到期日期这个时间段里的,每月最后一个星期几的行。


--  作者:有点甜
--  发布时间:2018/8/27 9:03:00
--  

Dim dt As DataTable = DataTables("派工")
Dim r As Row = Tables("客户资料").current
Dim sd As Date = r("开始日期")
Dim ed As Date = r("结束日期")
Dim wd As Integer =r("周")

Do While sd <= ed
    Dim y As Integer = sd.year
    Dim m As Integer = sd.month
    Dim d As Date = new Date(y,m,1)
    d = d.AddMonths(1).AddDays(-1)
    Do While True
        If d >= sd AndAlso d <= ed AndAlso d.DayOfWeek = wd Then
            Dim ndr = dt.addnew
            ndr("截止日期") = d
            ndr("编号") =r.DataRow("编号")
            sd = (new Date(y,m,1)).addmonths(1)
            Exit Do           
        End If
        d = d.AddDays(-1)
    Loop   
Loop