以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于自动更新生成表的问题! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160526) |
||||
-- 作者:aoyanghongwei -- 发布时间:2021/2/5 11:17:00 -- 关于自动更新生成表的问题! Select Case e.DataCol.Name Case "设备名称","计划开始日期" If e.DataRow.IsNull("设备名称") OrElse e.DataRow.IsNull("计划开始日期") Else Dim d As Date = e.DataRow("计划开始日期") Dim dr As DataRow = DataTables("试验室设备运行情况").Find("设备名称=\'" & e.DataRow("设备名称") & "\' and 月份=\'" & d.month & "\'") If dr Is Nothing Then dr = DataTables("试验室设备运行情况").AddNew() dr("设备名称") = e.DataRow("设备名称") dr("年份") = d.year dr("月份") = d.month End If If e.DataRow.IsNull("计划完成日期") = False Then Dim d1 As Date = e.DataRow("计划完成日期") Do While d <= d1 dr("设备运行情况_" & d.Day) = "P" d = d.AddDays(1) Loop Else dr("设备运行情况_" & d.Day) = "P" End If End If End Select Select Case e.DataCol.Name Case "设备名称","计划完成日期" If e.DataRow.IsNull("设备名称") OrElse e.DataRow.IsNull("计划完成日期") Else Dim d As Date = e.DataRow("计划完成日期") Dim dr As DataRow = DataTables("试验室设备运行情况").Find("设备名称=\'" & e.DataRow("设备名称") & "\' and 月份=\'" & d.month & "\'") If dr Is Nothing Then dr = DataTables("试验室设备运行情况").AddNew() dr("年份") = d.year dr("设备名称") = e.DataRow("设备名称") dr("月份") = d.month End If If e.DataRow.IsNull("计划开始日期") = False Then Dim d1 As Date = e.DataRow("计划开始日期") Do While d1 <= d dr("设备运行情况_" & d.Day) = "P" d = d.AddDays(-1) Loop Else dr("设备运行情况_" & d.Day) = "P" End If End If End Select 上述代码存在以下问题: 2、更改日期时,填充符号P只能增加,不能减少;例如:当日期由20变15日,15~20间的填充符不会变,特别是牵涉到月份改变时,已产生的填充符不会消除; 以上,望大神帮助,谢谢! |
||||
-- 作者:有点蓝 -- 发布时间:2021/2/5 11:41:00 -- Select Case e.DataCol.Name Case "设备名称","计划开始日期" If e.DataRow.IsNull("设备名称") OrElse e.DataRow.IsNull("计划开始日期") For Each dc As DataCol In e.DataTable.DataCols If dc.Name.StartsWith("设备运行情况_") Then e.DataRow(dc.name)=Nothing End If Next Else Dim d As Date = e.DataRow("计划开始日期") Dim m As Integer = d.month Dim dr As DataRow = DataTables("试验室设备运行情况").Find("设备名称=\'" & e.DataRow("设备名称") & "\' and 月份=\'" & m & "\'") If dr Is Nothing Then dr = DataTables("试验室设备运行情况").AddNew() dr("设备名称") = e.DataRow("设备名称") dr("年份") = d.year dr("月份") = m End If If e.DataRow.IsNull("计划完成日期") = False Then Dim d1 As Date = e.DataRow("计划完成日期") Do While d <= d1 If d.Month <> m Then m = d.Month dr = DataTables("试验室设备运行情况").Find("设备名称=\'" & e.DataRow("设备名称") & "\' and 月份=\'" & m & "\'") If dr Is Nothing Then dr = DataTables("试验室设备运行情况").AddNew() dr("设备名称") = e.DataRow("设备名称") dr("年份") = d.year dr("月份") = m End If End If dr("设备运行情况_" & d.Day) = "P" d = d.AddDays(1) Loop Else dr("设备运行情况_" & d.Day) = "P" End If End If End Select
|
||||
-- 作者:aoyanghongwei -- 发布时间:2021/2/5 14:05:00 -- 可能是我代码弄错了的原因,好像放进去,还是有些问题。能不能帮我运行一下数据库看看呢? 主要问题集中在: 1、开始和结束日期发如果跨月,能否自动新增加一行; 2、如果开始和结束日期发生变更,自动录入的 P能否自动增、减;特别是当月份有变化的时候,能否增、减一行。 麻烦您了,谢谢! |
||||
-- 作者:aoyanghongwei -- 发布时间:2021/2/5 14:06:00 --
|
||||
-- 作者:有点蓝 -- 发布时间:2021/2/5 14:36:00 -- Select Case e.DataCol.Name Case "计划开始日期","计划完成日期" Dim filter As String = "设备名称=\'" & e.DataRow("设备名称") & "\'" DataTables("试验室设备运行情况").DeleteFor(filter) Dim dr2 As DataRow For Each dr As DataRow In e.DataTable.Select(filter) If dr.IsNull("计划开始日期")= False AndAlso dr.IsNull("计划完成日期") = False Dim d As Date = dr("计划开始日期") Dim m As Integer = d.month dr2 = DataTables("试验室设备运行情况").Find(filter & " and 月份=\'" & m & "\' and 年份=" & d.Year) If dr2 Is Nothing Then dr2 = DataTables("试验室设备运行情况").AddNew() dr2("设备名称") = e.DataRow("设备名称") dr2("年份") = d.year dr2("月份") = m End If Dim d1 As Date = dr("计划完成日期") Do While d <= d1 If d.Month <> m Then m = d.Month dr2 = DataTables("试验室设备运行情况").Find(filter & " and 月份=\'" & m & "\' and 年份=" & d.Year) If dr2 Is Nothing Then dr2 = DataTables("试验室设备运行情况").AddNew() dr2("设备名称") = e.DataRow("设备名称") dr2("年份") = d.year dr2("月份") = m End If End If dr2("设备运行情况_" & d.Day) = "P" d = d.AddDays(1) Loop Else Dim d As Date If dr.IsNull("计划开始日期") d = dr("计划完成日期") Else d = dr("计划开始日期") End If If d <> Nothing Dim m As Integer = d.month dr2 = DataTables("试验室设备运行情况").Find(filter & " and 月份=\'" & m & "\' and 年份=" & d.Year) If dr2 Is Nothing Then dr2 = DataTables("试验室设备运行情况").AddNew() dr2("设备名称") = e.DataRow("设备名称") dr2("年份") = d.year dr2("月份") = m End If dr2("设备运行情况_" & d.Day) = "P" End If End If Next End Select
|
||||
-- 作者:aoyanghongwei -- 发布时间:2021/2/5 15:12:00 -- 完美解决,谢谢! |