以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多用户下余额老是会不对,余额验证问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131780)

--  作者:kmzb56
--  发布时间:2019/3/6 14:30:00
--  多用户下余额老是会不对,余额验证问题
我在页面集上做了一个余额谍验证的按钮,希望余额不对时可以验证刷新数据,但是不起做用,是不是哪里不对?或者是我锁定了行的原因?请帮我看一下,谢谢!
图片点击可在新窗口打开查看此主题相关图片如下:余额验证问题.png
图片点击可在新窗口打开查看

Dim tab As WinForm.TabControl = e.Form.controls("TabControl1")
Dim i As String = tab.SelectedPage.text
If i="油卡明细" Then 
i="youkamingxi"
Else
i=i
End If

If i="youkamingxi" Then
DataTables(i).DataCols("主卡余额").RaiseDataColChanged()
Else
DataTables(i).DataCols("余额").RaiseDataColChanged()
End If



--  作者:有点甜
--  发布时间:2019/3/6 14:44:00
--  

加载对应的全部数据出来;然后点击重置列,看能否正确计算。

 

如果还有问题,实例发上来测试。


--  作者:kmzb56
--  发布时间:2019/3/8 17:57:00
--  

DataColChanged 事件


Select Case e.DataCol.Name
    Case "主卡冲入","分配金额"
        For Each dr As DataRow In e.DataTable.Select("[_SortKey] >= " & e.DataRow("_SortKey"))
            Dim Val1nh As Double = e.DataTable.SQLCompute("Sum(主卡冲入)","[_SortKey] <= " & dr("_SortKey"))
            Dim Val2nh As Double = e.DataTable.SQLCompute("Sum(分配金额)","[_SortKey] <= " & dr("_SortKey"))
            dr("主卡余额") = Val1nh - Val2nh
        Next
End Select
e.DataTable.save

   由于我是一个集面集合上,其它的表都是收入,支出,只有油卡明细上是列名称有些不一样,我的余额重置按纽是这样写的:
Dim tab As WinForm.TabControl = e.Form.controls("TabControl1")
Dim i As String = tab.SelectedPage.text
If i="油卡明细" Then 
i="youkamingxi"
Else
i=i
End If
If i="youkamingxi" Then
DataTables(i).DataCols("主卡冲入").RaiseDataColChanged(DataTables(i).DataRows(0))
Else
DataTables(i).DataCols("收入").RaiseDataColChanged(DataTables(i).DataRows(0))
End If 

发现了一个问题,集页集合上其它重量都很快,但这个不行,很慢大约4分钟,像死机一样,
二:我发出重置的只是入帐,出帐不重置么?是只需重置一个?还是重置两个?谢谢!

[此贴子已经被作者于2019/3/8 18:00:41编辑过]

--  作者:有点蓝
--  发布时间:2019/3/8 20:21:00
--  
SQLCompute后台查询肯定慢的。把相关所有数据都加载出来,然后使用Compute计算
--  作者:kmzb56
--  发布时间:2019/3/9 14:28:00
--  
谢谢!请问有实际列子么?或者怎么弄帮我一下。谢谢!


--  作者:有点蓝
--  发布时间:2019/3/9 14:55:00
--  
全部加载数据呀,然后SQLCompute改为Compute
--  作者:kmzb56
--  发布时间:2019/3/9 22:13:00
--  
我发现有个问题,一般我只有最近一天的数据有余额会有错,请问我可不可以从最后几条重量?就是重置当前行之后的,这样可以快些不?因为现在的数据有1000多行。

Dim tab As WinForm.TabControl = e.Form.controls("TabControl1")
Dim i As String = tab.SelectedPage.text
If i="油卡明细" Then 
i="youkamingxi"
Else
i=i
End If
If i="youkamingxi" Then
DataTables(i).DataCols("主卡冲入").RaiseDataColChanged(DataTables(i).DataRows(0))
Else
DataTables(i).DataCols("收入").RaiseDataColChanged(DataTables(i).DataRows(0))
End If 

我这里是第一行重置的,如果我确定当前行之前的没问题,可否从我选从当前行到后面的行重置?怎么写?谢谢!
[此贴子已经被作者于2019/3/9 22:14:49编辑过]

--  作者:kmzb56
--  发布时间:2019/3/9 22:20:00
--  
帮我看一下是不是收入列和支出列都要重置??你没直接回复我的疑问哟,谢谢!
--  作者:有点甜
--  发布时间:2019/3/10 10:40:00
--  

根据条件重置列即可,比如重置前2天的数据,如

 

DataTables("表A").DataCols("第一列").RaiseDataColChanged("日期 >= #" & date.today.adddays(-2) & "#")