Foxtable(狐表)用户栏目专家坐堂 → 甜老师,有时会重复加载好几天的数据, 帮看一下,谢谢


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

主题:甜老师,有时会重复加载好几天的数据, 帮看一下,谢谢

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
甜老师,有时会重复加载好几天的数据, 帮看一下,谢谢  发帖心情 Post By:2018/12/10 15:46:00 [只看该作者]

甜老师,有时会 重复 加载好几天的数据, 帮看一下,谢谢

放在窗口 afterload 事件里面的: 

With DataTables("收款对账表")
    Dim dt2 As Date = DataTables("收款对账表").Compute("max(服务日期)")
    Dim dt3 As Date = Date.Today.adddays(1)
    
    If DataTables("收款对账表").Compute("max(服务日期)") = Date.Today()
        DataTables("收款对账表").load()
        Tables("收款对账表").Sort = "服务日期"
    Else
        Dim cmd As new SQLCommand
        cmd.C
        cmd.CommandText = "Select[_identify],编号,服务日期,客户信息,支付方式,服务内容,价格 Flom {表A} where 日期 > #" & dt2 & "# And 日期 < #" & dt3 & "#"
        Dim dt = cmd.ExecuteReader
        
       Tables("收款对账表").addnew(1)
        Dim i As Integer = 0
        Dim drt As Row
        For Each fdr As DataRow In dt.Select("支付方式 like '月付%'")
            If i = 0 Then
                drt = Tables("收款对账表").current
            Else
                drt = Tables("收款对账表").addnew(1)
            End If
            drt("编号") = fdr("编号")
            drt("客户信息") = fdr("客户信息")
            drt("支付方式") = fdr("支付方式")
            drt("服务内容") = fdr("服务内容")
            drt("服务日期") = fdr("服务日期")
            drt("价格") = fdr("价格")       
   
            i +=1
        Next
        
        DataTables("收款对账表").load()
        DataTables("收款对账表").save()
        Tables("收款对账表").Sort = "服务日期"
        
    End If
End With

现在的问题是, 收款对账表 已经有 到今天的数据, 但是打开运行后,又从表A里面加载了几天的数据包括今天的, 就重复了。
但是有时打开又不重复, 重复的情况一般是隔几天才打开,就会产生重复。
[此贴子已经被作者于2018/12/10 15:47:19编辑过]

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


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

是【收款对账表】表的数据重复,还是【表A】的数据重复?

 

如果重复,是不是你重复执行了代码,重复添加了多次数据导致的?


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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/12/10 17:10:00 [只看该作者]

是【收款对账表】表的数据重复,还是【表A】的数据重复?

收款对账表数据重复了, 表A里面没有重复的数据

 

如果重复,是不是你重复执行了代码,重复添加了多次数据导致的?

代码放在窗口的AFTERLOAD事件里面,每次打开窗口会执行一次。


像 这样的, 按照日期来的。 红色的数据就代表重复的。



此主题相关图片如下:微信图片_20181210170612.png
按此在新窗口浏览图片


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


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

        For Each fdr As DataRow In dt.Select("支付方式 like '月付%'")
            If i = 0 Then
                drt = Tables("收款对账表").current
            Else
                drt = Tables("收款对账表").addnew(1)
            End If
            drt("编号") = fdr("编号")
            drt("客户信息") = fdr("客户信息")
            drt("支付方式") = fdr("支付方式")
            drt("服务内容") = fdr("服务内容")
            drt("服务日期") = fdr("服务日期")
            drt("价格") = fdr("价格")       
   
            i +=1
        Next
 
改成
 
For Each fdr As DataRow In dt.Select("支付方式 like '月付%'")
    Dim dr As DataRow = DataTables("收款对账表").Find("编号 = '" & fdr("编号") & "'")
    If dr Is Nothing Then
        dr = DataTables("收款对账表").addnew(1)
    End If
    dr("编号") = fdr("编号")
    dr("客户信息") = fdr("客户信息")
    dr("支付方式") = fdr("支付方式")
    dr("服务内容") = fdr("服务内容")
    dr("服务日期") = fdr("服务日期")
    dr("价格") = fdr("价格")
Next

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/12/11 15:49:00 [只看该作者]

我找到原因了, 原来出现重复的现象时,就是在窗口里面我用了 筛选, 比如当筛选出来的数据是前天的日期,在下次打开窗口的时候,他就会又加载一遍昨天和今天的数据。 
代码问题应该出现在这里:
With DataTables("收款对账表")
    Dim dt2 As Date = DataTables("收款对账表").Compute("max(服务日期)")   ‘但是我计算的是datatables里面的最大日期啊, 不是计算table里面的最大日期哦。
    Dim dt3 As Date = Date.Today.adddays(1)
    
    If DataTables("收款对账表").Compute("max(服务日期)") = Date.Today()
        DataTables("收款对账表").load()
        Tables("收款对账表").Sort = "服务日期"
    Else
        Dim cmd As new SQLCommand
        cmd.C
        cmd.CommandText = "Select[_identify],编号,服务日期,客户信息,支付方式,服务内容,价格 Flom {表A} where 日期 > #" & dt2 & "# And 日期 < #" & dt3 & "#"
        Dim dt = cmd.ExecuteReader

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


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

认认真真看懂四楼,你重复添加了数据进去保存了啊,自然有问题。

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/12/11 15:57:00 [只看该作者]

没有, 打开窗口不是每次都会重复加载之前的数据,只有在筛选后才会重复加载。
我在beforeclose事件里面加上了 

datatables().loadfilter=""
datatables().load

就可以了。
It works now :)

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


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

没看懂你表达的意思。如果下次还有问题,做个对应例子发上来测试。

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/12/11 16:10:00 [只看该作者]

好的 我下次再发现这个地方有问题,我就做上来。

谢谢甜老师, 辛苦了。图片点击可在新窗口打开查看

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


加好友 发短信
等级:四尾狐 帖子:821 积分:5760 威望:0 精华:0 注册:2015/2/3 22:19:00
  发帖心情 Post By:2018/12/13 15:16:00 [只看该作者]

refer to this: http://www.foxtable.com/webhelp/scr/2897.htm



With DataTables("收款对账表")
    Dim dt2 As Date = DataTables("收款对账表").SQLCompute("max(服务日期)")     'compute 改成SQLCompute就好了。
    Dim dt3 As Date = Date.Today.adddays(1)
    
    If DataTables("收款对账表").Compute("max(服务日期)") = Date.Today()
        DataTables("收款对账表").load()
        Tables("收款对账表").Sort = "服务日期"
    Else
...

 回到顶部
总数 11 1 2 下一页