Foxtable(狐表)用户栏目专家坐堂 → 如何将一个表列名上的日期转成另一个表的日期型数据


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

主题:如何将一个表列名上的日期转成另一个表的日期型数据

客人(117.15.*.*)
  11楼


  发帖心情 Post By:2013/6/16 11:05:00 [只看该作者]

如果只生成三周的发货计划,并且ForecastTable中的单元格为空的,在生成的ShippingTable中不显示(目前显示为0)该如何做?谢谢!

 回到顶部
客人(117.15.*.*)
  12楼


  发帖心情 Post By:2013/6/16 16:42:00 [只看该作者]

如果只生成最近两周的发货计划,并且不显示数量为零的发货,该如何做?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/6/16 20:48:00 [只看该作者]

Dim dt1 As Date = new Date(Date.Today.Year,1,1)
dt1 = dt1.AddDays(-dt1.DayOfWeek + 1)
DataTables("ShippingTable").DataRows.Clear
DataTables("ShippingTable").StopRedraw
For Each dr1 As DataRow In DataTables("ForecastTable").Select("日期列名称 >= #" Date.Today.Adddays(-14) & "#")
    For Each dc As DataCol In DataTables("ForecastTable").DataCols
        If dc.name Like "W#*"
            Dim dr2 As DataRow  = DataTables("ShippingTable").Addnew
            dr2("Customer") = dr1("Customer")
            dr2("StokvisPN") = dr1("StokvisPN")
            dr2("ShippingQuantity")  = dr1(dc.name)
            Dim wk As Integer = dc.name.SubString(1)
            dr2("DemandDate") = dt1.AddDays(wk * 7)
        End If
    Next
Next
DataTables("ShippingTable").ResumeRedraw


 回到顶部
客人(117.15.*.*)
  14楼


  发帖心情 Post By:2013/6/16 22:47:00 [只看该作者]

还得请你帮个忙,如果想保留刷新日之前的发货计划,按钮按下后,只刷新当日后各周的发货计划,按钮代码如何修改?谢谢!

 回到顶部
客人(60.27.*.*)
  15楼


  发帖心情 Post By:2013/6/19 22:54:00 [只看该作者]

有点甜,你好!
你写的代码我试了,很好。麻烦在指教以下,如何设置按钮将点击按钮只更新点击当日以后的发货计划,保留上一次(更新日前)的发货计划。谢谢!

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/6/20 8:41:00 [只看该作者]

把这一行删除就行了:

DataTables("ShippingTable").DataRows.Clear

 


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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By:2013/7/15 17:20:00 [只看该作者]

以下是引用有点甜在2013-6-16 10:03:00的发言:

做个按钮,按钮代码:

 

Dim dt1 As Date = new Date(Date.Today.Year,1,1)
dt1 = dt1.AddDays(-dt1.DayOfWeek + 1)
DataTables("ShippingTable").DataRows.Clear
DataTables("ShippingTable").StopRedraw
For Each dr1 As DataRow In DataTables("ForecastTable").Datarows
    For Each dc As DataCol In DataTables("ForecastTable").DataCols
        If dc.name Like "W#*"
            Dim dr2 As DataRow  = DataTables("ShippingTable").Addnew
            dr2("Customer") = dr1("Customer")
            dr2("StokvisPN") = dr1("StokvisPN")
            dr2("ShippingQuantity")  = dr1(dc.name)
            Dim wk As Integer = dc.name.SubString(1)
            dr2("DemandDate") = dt1.AddDays(wk * 7)
        End If
    Next
Next
DataTables("ShippingTable").ResumeRedraw

 

做了按钮,效果不不错,但发现生成的“shippingTable"有太多的行(因为产品多,Forecasttable wk数量多),希望在此代码的基础上做修改,只生成自Date. Today 后三周的计划。请指点! 现谢了。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/7/15 17:27:00 [只看该作者]

Dim dt1 As Date = new Date(Date.Today.Year,1,1)
dt1 = dt1.AddDays(-dt1.DayOfWeek + 1)
DataTables("ShippingTable").DataRows.Clear
DataTables("ShippingTable").StopRedraw
For Each dr1 As DataRow In DataTables("ForecastTable").Datarows.Select("日期列名称 >= #" Date.Today & "# And 日期列名称 <= #" & Date.Today.AddDays(20) & "#")
    For Each dc As DataCol In DataTables("ForecastTable").DataCols
        If dc.name Like "W#*"
            Dim dr2 As DataRow  = DataTables("ShippingTable").Addnew
            dr2("Customer") = dr1("Customer")
            dr2("StokvisPN") = dr1("StokvisPN")
            dr2("ShippingQuantity")  = dr1(dc.name)
            Dim wk As Integer = dc.name.SubString(1)
            dr2("DemandDate") = dt1.AddDays(wk * 7)
        End If
    Next
Next
DataTables("ShippingTable").ResumeRedraw

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


加好友 发短信
等级:小狐 帖子:347 积分:2844 威望:0 精华:0 注册:2013/4/26 20:58:00
  发帖心情 Post By:2013/7/16 17:58:00 [只看该作者]

"ForecastTable" 中的W# 不是日期列,是数值列,填入的是需求数。试了上面的代码,有错误。

 

我重做了各例子,见附件,ForecastTable中的W24-W55是要输入的需求数,完成输入后,想通过一个按钮点击,将ForecastTable的各行间插入一行,插入的行为满足需求数(原先的行为“需求数”插入的行为“满足需求数”),插入的行自动带出上一行的StokvisPN和Customer,然后手工录入W24- W55的数值(完成后的表如“ForecastTable1),在通过一个按钮,将“满足需求数”的各行生成到ShippingTable,同样只生成自Date. Today 后三周的计划。

 

这个要求和最初的相似,但难度增加了许多。希望各位大师指教。谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目715.table

[此贴子已经被作者于2013-7-16 17:58:25编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/7/16 21:14:00 [只看该作者]

原来的问题,后三周可以这样处理:

Dim dt1 As Date = new Date(Date.Today.Year,1,1)
dt1 = dt1.AddDays(-dt1.DayOfWeek + 1)
DataTables("ShippingTable").DataRows.Clear
DataTables("ShippingTable").StopRedraw
For Each dr1 As DataRow In DataTables("ForecastTable").Datarows
    For Each dc As DataCol In DataTables("ForecastTable").DataCols
        If dc.name Like "W#*"
            Dim wk As Integer = dc.name.SubString(1)
            Dim dv As Date = dt1.AddDays(wk * 7)
            If dv >= Date.Today AndAlso dv <=  Date.today.Adddays(20)
                Dim dr2 As DataRow  = DataTables("ShippingTable").Addnew
                dr2("Customer") = dr1("Customer")
                dr2("StokvisPN") = dr1("StokvisPN")
                dr2("ShippingQuantity")  = dr1(dc.name)
                dr2("DemandDate") = dv
            End If
        End If
    Next
Next
DataTables("ShippingTable").ResumeRedraw

新的问题,看不懂。



 回到顶部
总数 21 上一页 1 2 3 下一页