以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:当表B中的时间列,怎么在新增时间值时候,判断时间值已经含有了某个时间,进而只新增没有的时间值。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92500) |
-- 作者:李孝春 -- 发布时间:2016/11/5 2:19:00 -- 求助:当表B中的时间列,怎么在新增时间值时候,判断时间值已经含有了某个时间,进而只新增没有的时间值。 求助: 表B根据表A中的更新时间和指定时间之差,计算出了天数,然后表B对应增加天数,列出所有时间。 当表A中的时间列,怎么在新增时间值时候,判断时间值已经含有了某个时间,进而只新增没有的时间值。 假设表A中已含有 2014-12-01 2014-12-02 那么新增就从2014-12-03开始,之前的不要动 形成连贯数据 2014-12-01 2014-12-02 2014-12-03 基础代码如下:【请指导怎么写判断代码,下面的代码运行效果不理想】 Dim ab As Date =DataTables("表A").compute("Max(更新时间)") Dim abc As Date ="2014-12-01" Dim t As TimeSpan = ab - abc Dim dr As DataRow DataTables("表A").StopRedraw For i As Integer = 0 To t.Days dr = DataTables("表B").AddNew() Dim str As Date = abc.AddDays(i) Dim fdr As DataRow = DataTables("表B").Find("操作日期 = \'" & Format(str, "yyy-MM-dd") & "\'") If fdr IsNot Nothing Then msgbox("已存在") e.Cancel = True else dr("操作日期") = Format(str, "yyy-MM-dd") End If Next DataTables("表B").ResumeRedraw |
-- 作者:有点蓝 -- 发布时间:2016/11/5 9:24:00 -- 怎么个不理想?计算后是什么效果,希望达到什么效果?截图说明 |
-- 作者:李孝春 -- 发布时间:2016/11/5 9:55:00 -- 回复:(有点蓝)怎么个不理想?计算后是什么效果,希... 计算后会有重复值出现,且还有空白值。 代码没有问题吧 有点蓝老师
|
-- 作者:有点蓝 -- 发布时间:2016/11/5 11:29:00 -- 结合具体的数据才知道有没有问题。上例子看看 |
-- 作者:李孝春 -- 发布时间:2016/11/6 20:04:00 -- 回复:(有点蓝)结合具体的数据才知道有没有问题。上... 麻烦看看 第一次按钮可以获取如图1的数据 第二次按钮就直接成为了空数据,但是行数依然是十行 求修正为第二次按钮操作 依然保持只有十行和表A一样的数据 如果表A新增一个时间 那么表B没有 点按钮的时候 就将该新增的数据 写入表B 已有的数据依然保持 按钮事件代码: Dim ab As Date =DataTables("表A").compute("Max(更新时间)") Dim abc As Date ="2012-12-01" Dim t As TimeSpan = ab - abc Dim dr As DataRow ’DataTables("表A").StopRedraw For i As Integer = 0 To t.Days dr = DataTables("表B").AddNew() Dim str As Date = abc.AddDays(i) dr("操作日期") = Format(str, "yyy-MM-dd") Next ’DataTables("表A").ResumeRedraw 表B事件 列变化前代码 If e.DataCol.Name = "操作日期" Then Dim fdr As DataRow = DataTables("表B").Find("操作日期 = \'" & Format(e.NewValue, "yyy-MM-dd") & "\'") If fdr IsNot Nothing Then e.Cancel = True End If End If [此贴子已经被作者于2016/11/6 22:50:44编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/11/7 8:56:00 -- 去掉表B全部表事件 表A,DataColChanged事件 If e.DataCol.Name = "更新时间" Then \'如果内容发生变动的是品名列 If e.DataRow.IsNull("更新时间") = False Then \'如果新值是空白,也就是品名列的内容为空 Dim dr As DataRow \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr dr = DataTables("表B").Find("[操作日期] = \'" & e.NewValue & "\'") If dr Is Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing dr = DataTables("表B").AddNew dr("操作日期") = e.NewValue End If End If End If 设置代码后先重置一次更新时间列
|
-- 作者:有点青 -- 发布时间:2016/11/7 9:13:00 -- Dim ab As Date =DataTables("表A").compute("Max(更新时间)") Dim abc As Date ="2012-12-01" Dim t As TimeSpan = ab - abc Dim dr As DataRow For i As Integer = 0 To t.Days Dim fdr As DataRow = DataTables("表B").find("操作日期 = #" & abc.adddays(i) & "#") If fdr Is Nothing Then fdr = DataTables("表B").AddNew() End If Dim str As Date = abc.AddDays(i) fdr("操作日期") = str Next |