Foxtable(狐表)用户栏目专家坐堂 → [求助]刷新不实时


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

主题:[求助]刷新不实时

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


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
  发帖心情 Post By:2023/1/5 9:33:00 [只看该作者]

昨天参照了这个代码,编写了:
Select Case e.DataCol.Name
    Case "so_oder_qty"

End
 Select
收到部分效果。就是我把子表整行删除后,相当于so_shp_qty=0时,状态不会改变。然后我在子表中DataRowDeleting事件中添加:e.DataRow("dnd_qty") = 0,还是不能正常触发父表中的其他行改变。

 回到顶部
帅哥,在线噢!
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107847 积分:548592 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/5 9:42:00 [只看该作者]

DataRowDeleting事件
e.DataRow("dnd_qty") = 0
    Dim pr As DataRow = e.DataRow.GetParentRow("so_det") '找出对应的父行
    If pr IsNot Nothing Then
        DataTables("so_det").DataCols("so_oder_qty").RaiseDataColChanged(pr) '通知系统此父行的数量列发生了改变,触发DataColChanged事件
    End If

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


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
  发帖心情 Post By:2023/1/5 11:28:00 [只看该作者]

测试了,效果一样,删除子表行的时候,有触发效果,但是返回值不对,返回的是执行未完结,按理来说是返回未执行。在子表不删除行的情况下,数量直接删除,则能返回正确的结果。
Select Case e.DataCol.Name
    Case "so_oder_qty", "so_shp_qty"
        If e.DataRow.IsNull("so_oder_qty") OrElse e.DataRow.IsNull("so_shp_qty") Then
If e.DataRow.IsNull("so_shp_qty") Then
e.DataRow("so_stutas") = "未执行"
e.DataRow.Locked = False
End If
Else If e.DataRow("so_oder_qty") > e.DataRow("so_shp_qty") and Then
e.DataRow("so_stutas") = "执行未完结"
e.DataRow.Locked = False 
Else 
e.DataRow("so_stutas") = "执行完毕"
e.DataRow.Locked = True
    End If
End Select


感觉是0和空值引起的,修改了代码,效果还是一样。
Select Case e.DataCol.Name
    Case "so_oder_qty", "so_shp_qty"
        If e.DataRow.IsNull("so_oder_qty") OrElse e.DataRow.IsNull("so_shp_qty") Then
If e.DataRow("so_shp_qty") = 0 Then
e.DataRow("so_stutas") = "未执行"
e.DataRow.Locked = False
End If
Else If e.DataRow("so_oder_qty") > e.DataRow("so_shp_qty") AndAlso e.DataRow("so_shp_qty") <> 0 Then
e.DataRow("so_stutas") = "执行未完结"
e.DataRow.Locked = False 
Else If e.DataRow("so_oder_qty") <= e.DataRow("so_shp_qty")
e.DataRow("so_stutas") = "执行完毕"
e.DataRow.Locked = True
    End If
End Select

烦请老师再指点一二
图片点击可在新窗口打开查看此主题相关图片如下:结果.png
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107847 积分:548592 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/5 11:32:00 [只看该作者]

请上传实例说明

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


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
  发帖心情 Post By:2023/1/5 13:46:00 [只看该作者]

看下删除子表所有数据的时候,为什么触发的结果不对。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


 回到顶部
帅哥,在线噢!
有点蓝
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip


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


加好友 发短信
等级:幼狐 帖子:88 积分:697 威望:0 精华:0 注册:2022/10/10 15:34:00
  发帖心情 Post By:2023/1/5 14:25:00 [只看该作者]

删除子表整行数据后,返回结果还是执行未完结,应该是未执行才对啊。

 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107847 积分:548592 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/1/5 14:34:00 [只看该作者]

        If e.DataRow.IsNull("so_oder_qty") OrElse e.DataRow.IsNull("so_shp_qty") Then
            If e.DataRow.IsNull("so_shp_qty") Then
                e.DataRow("so_stutas") = "未执行"
                e.DataRow.Locked = False
            End If
改为
        If e.DataRow.IsNull("so_oder_qty") OrElse e.DataRow.IsNull("so_shp_qty") OrElse e.DataRow("so_shp_qty") = 0 Then
            If e.DataRow.IsNull("so_shp_qty") OrElse e.DataRow("so_shp_qty") = 0 Then
                e.DataRow("so_stutas") = "未执行"
                e.DataRow.Locked = False
            End If

 回到顶部
总数 18 上一页 1 2