以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118018)

--  作者:狂风暴雨狂波
--  发布时间:2018/4/23 14:50:00
--  求助
使用外部数据源,表A是外部数据源的表,打开项目时表A不加载任何数据,项目打开后在表A中录入一行数据保存,再加载表A的所有数据,为什么新录入的一行数据不在表A的最后一行?如何使新录入的数据在表A的最后?
--  作者:有点甜
--  发布时间:2018/4/23 15:19:00
--  

把_Sortkey列删除掉,即可

 

http://www.foxtable.com/webhelp/scr/1791.htm

 


--  作者:狂风暴雨狂波
--  发布时间:2018/4/23 17:02:00
--  
那该表就不能插入行了,如果要插入行该怎么办?
--  作者:狂风暴雨狂波
--  发布时间:2018/4/23 17:13:00
--  

Select Case e.DataCol.Name
    Case
"收入","支出"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc")
\'找出上一行
        If dr Is Nothing Then
\'如果没有找到上一行,说明本行就是第一行
           
\'计算之前的结存
            Dim jk As Double
            Dim ck As Double
            jk =  DataTables(
"表A").SQLCompute("Sum(收入)","[_SortKey] < " & e.DataRow("_SortKey"))
            ck =  DataTables(
"表A").SQLCompute("Sum(支出)","[_SortKey] < " & e.DataRow("_SortKey"))
            e.DataRow(
"余额") = e.DataRow("收入") - e.DataRow("支出") + jk -ck
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
\'重算余下行的余额
            drs(i)(
"余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
       
Next
End
Select

那么这段代码不是没用了吗?


--  作者:有点甜
--  发布时间:2018/4/23 19:05:00
--  
以下是引用狂风暴雨狂波在2018/4/23 17:02:00的发言:
那该表就不能插入行了,如果要插入行该怎么办?

 

不能插入行。如果要插入行,你需要datarowadded事件,查找最大的_Sortkey值,然后赋值进去。

 

http://www.foxtable.com/webhelp/scr/2897.htm

 

[此贴子已经被作者于2018/4/23 19:05:38编辑过]

--  作者:狂风暴雨狂波
--  发布时间:2018/4/24 8:15:00
--  
_Sortkey列已删除怎么查找最大的_Sortkey值?如何赋值?

上述DataColChanged事件代码怎么改?

请老师明示.
[此贴子已经被作者于2018/4/24 8:29:07编辑过]

--  作者:有点甜
--  发布时间:2018/4/24 8:53:00
--  

1、不要删除_Sortkey列。

 

2、DataRowAdded事件,写代码

 

e.DataRow("_Sortkey") = e.DataTable.SqlCompute("max(_Sortkey)")

e.DataRow.Save


--  作者:狂风暴雨狂波
--  发布时间:2018/4/24 9:15:00
--  
假如3月4月5月数据已录入,现在发现4月有笔收入数据未录入,打开项目未加载任何数据,现在录入4月数据保存后,再加载所有数据,如何使新录入的4月份的数据移到4月数据中去而不是放到最后,如何写DataRowAdded事件代码?
--  作者:有点甜
--  发布时间:2018/4/24 10:04:00
--  

回复8楼,你这种情况,根据日期排序不就好了?

 

http://www.foxtable.com/webhelp/scr/0451.htm

 

如果担心流水账统计问题,看看

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=96147&skin=0

 


--  作者:狂风暴雨狂波
--  发布时间:2018/4/24 16:19:00
--  
以下是引用有点甜在2018/4/24 8:53:00的发言:

1、不要删除_Sortkey列。

 

2、DataRowAdded事件,写代码

 

e.DataRow("_Sortkey") = e.DataTable.SqlCompute("max(_Sortkey)")

e.DataRow.Save

增加行时出现如下提示:
图片点击可在新窗口打开查看此主题相关图片如下:运行错误提示.bmp
图片点击可在新窗口打开查看


 


图片点击可在新窗口打开查看此主题相关图片如下:运行错误提示1.bmp
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/4/24 16:24:21编辑过]