以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 甜老师,有时会重复加载好几天的数据, 帮看一下,谢谢 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128562) |
|
-- 作者:cyrollin -- 发布时间: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编辑过]
|
|
-- 作者:有点甜 -- 发布时间:2018/12/10 16:41:00 -- 是【收款对账表】表的数据重复,还是【表A】的数据重复?
如果重复,是不是你重复执行了代码,重复添加了多次数据导致的? |
|
-- 作者:cyrollin -- 发布时间:2018/12/10 17:10:00 -- |
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间: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 |
|
-- 作者:有点甜 -- 发布时间:2018/12/11 15:51:00 -- 认认真真看懂四楼,你重复添加了数据进去保存了啊,自然有问题。 |
|
-- 作者:cyrollin -- 发布时间:2018/12/11 15:57:00 -- 没有, 打开窗口不是每次都会重复加载之前的数据,只有在筛选后才会重复加载。 我在beforeclose事件里面加上了 datatables().loadfilter="" datatables().load 就可以了。 It works now :)
|
|
-- 作者:有点甜 -- 发布时间:2018/12/11 16:07:00 -- 没看懂你表达的意思。如果下次还有问题,做个对应例子发上来测试。 |
|
-- 作者:cyrollin -- 发布时间:2018/12/11 16:10:00 -- 好的 我下次再发现这个地方有问题,我就做上来。 谢谢甜老师, 辛苦了。
|
|
-- 作者:cyrollin -- 发布时间: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 ... |