Foxtable(狐表)用户栏目专家坐堂 → 触发求助


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

主题:触发求助

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
触发求助  发帖心情 Post By:2015/8/7 16:34:00 [只看该作者]

 

DataColChanged    事件代码

 

Case "产品编码"       
        e.DataRow.Locked = False
        Dim pr As DataRow = e.DataRow.GetParentRow("出入记录_主表")
        Dim cmd1 As New SQLCommand
        cmd1.ConnectionName= gs_strActiveConn
        cmd1.CommandText="sel ect [库存] from {V_仓库物料库存} where  [审核] = 1 and [仓库编码] = '" & pr("仓库编码") & "' and [产品编码] = '" & e.DataRow("产品编码") & "'"
        Dim dt1 As DataTable = cmd1.ExecuteReader
        If dt1.DataRows.Count>0 Then
            e.DataRow("当前库存")= dt1.DataRows(0)("库存")
        Else
            e.DataRow("当前库存")= 0
        End If

 

触发代码

 

For i As Integer=0 To Tables("出入记录_主表.出入记录_明细表").rows.Count-1
DataTables("出入记录_明细表").datacols("产品编码").RaiseDataColChanged()
Next

 

为什么明细 表里只有三条数据

监测到 该系列行为对数据库中的所有数据均进行了操作。 我只要重算明细 表里的产品的库存数据就好。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/7 16:43:00 [只看该作者]

For Each r As Row In Tables("出入记录_主表.出入记录_明细表").rows
    DataTables("出入记录_明细表").datacols("产品编码").RaiseDataColChanged("关联列 = '" & r("关联列") & "'")
Next

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


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

 1、下面这种用法不对,重置列时不需要循环

For i As Integer=0 To Tables("出入记录_主表.出入记录_明细表").rows.Count-1
DataTables("出入记录_明细表").datacols("产品编码").RaiseDataColChanged()
Next

2、你要用RaiseDataColChanged(Filter)

把主表和子表关联的号记录下来

然后 Filter = "外键 =" & 主表号


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


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

2楼正解

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/8/7 16:49:00 [只看该作者]

谢谢 这样效果好多了,没有遍历数据库中的所有数据了

但观察到如果明细表中有3条数据的话 DataColChanged  被执行了9次,如果4条记录的话,被执行了16次,就是被执行了明细表数据行数N的平方次数。

 

本意只要执行 N次了。


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


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

改一下看看
For Each r As Row In Tables("出入记录_主表.出入记录_明细表").rows
    Dim dr as DataRow = DataTables("出入记录_明细表").Find("关联列 = '" & r("关联列") & "'")
    DataTables("出入记录_明细表").datacols("产品编码").RaiseDataColChanged(dr)
Next

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/7 17:00:00 [只看该作者]

汗,你这个是关联表,主表数据,肯定只有一行。把当前行重置就行啊。

 

DataTables("出入记录_明细表").datacols("产品编码").RaiseDataColChanged(Tables("出入记录_明细表").Current.DataRow)
 


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/8/7 17:01:00 [只看该作者]

正解

 回到顶部