Foxtable(狐表)用户栏目专家坐堂 → 表事件,计算编码问题


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

主题:表事件,计算编码问题

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
表事件,计算编码问题  发帖心情 Post By:2016/11/14 13:29:00 [只看该作者]

哪位老师帮忙看一下,下面的代码错在哪了:

Select Case e.DataCol.Name
    Case "供应商编码","借方","贷方"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [供应商编码] = '" & mr("供应商编码") & "'", "[_SortKey] Desc")
        If dr Is Nothing Then '如果没有上一行,说明本行就是同产品的第一行
            mr("余额") = mr("借方") - mr("贷方")
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [供应商编码] = '" & dr("供应商编码") & "'")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
            drs(i)("余额") = drs(i-1)("余额") + drs(i)("借方") - drs(i)("贷方")
        Next
End Select


运行后出现如下错误:




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


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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2016/11/14 13:51:00 [只看该作者]

请有点蓝老师帮忙。

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2016/11/14 14:18:00 [只看该作者]

请各位老师帮忙呀,急用。

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


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

如果是外部表,可能没有_SortKey列,增加一下,勾上插入标志

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

或者更改为其它可以排序的列,如_Identify等

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2016/11/14 14:58:00 [只看该作者]

有点蓝老师,更改后不出错误提示了。但表有13万多行,怎么重置列后就死机了。

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


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

这么多数据,这种计算,假死是正常的。等一段时间看看能不能计算完毕。不然就分段计算吧,分也加载分年、月顺序进行计算

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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2016/11/14 15:22:00 [只看该作者]

谢谢有点蓝老师。

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/14 16:24:00 [只看该作者]

以下是引用feixianzhi在2016/11/14 14:58:00的发言:
有点蓝老师,更改后不出错误提示了。但表有13万多行,怎么重置列后就死机了。

 

重置列没必要全部行重置一次。根据你写的代码,只需要把不同供应商编号的第一行重置即可。如代码

 

Dim dt As DataTable = DataTables("表A")
For Each gys As String In dt.GetValues("第一列")
    dt.datacols("第一列").RaiseDataColChanged(dt.Find("第一列 = '" & gys & "'", "_sortkey"))
Next

 

 


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


加好友 发短信
等级:二尾狐 帖子:503 积分:4002 威望:0 精华:0 注册:2016/6/7 7:45:00
  发帖心情 Post By:2016/11/15 7:33:00 [只看该作者]

麻烦问一下有点青老师,你这段代码放在哪里呀。能给出完整代码吗。谢谢。

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


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

命令窗口执行,或者按钮事件


 回到顶部