Foxtable(狐表)用户栏目专家坐堂 → 求助:当表B中的时间列,怎么在新增时间值时候,判断时间值已经含有了某个时间,进而只新增没有的时间值。


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

主题:求助:当表B中的时间列,怎么在新增时间值时候,判断时间值已经含有了某个时间,进而只新增没有的时间值。

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:当表B中的时间列,怎么在新增时间值时候,判断时间值已经含有了某个时间,进而只新增没有的时间值。  发帖心情 Post By:2016/11/5 2:19:00 [只看该作者]

求助:
表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






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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/5 9:24:00 [只看该作者]

怎么个不理想?计算后是什么效果,希望达到什么效果?截图说明

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)怎么个不理想?计算后是什么效果,希...  发帖心情 Post By:2016/11/5 9:55:00 [只看该作者]

计算后会有重复值出现,且还有空白值。
代码没有问题吧  有点蓝老师

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/5 11:29:00 [只看该作者]

结合具体的数据才知道有没有问题。上例子看看

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)结合具体的数据才知道有没有问题。上...  发帖心情 Post By:2016/11/6 20:04:00 [只看该作者]

麻烦看看


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

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20161106223129.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.table


第一次按钮可以获取如图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编辑过]

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

设置代码后先重置一次更新时间列

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By: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

 回到顶部