Foxtable(狐表)用户栏目专家坐堂 → 编号错乱


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

主题:编号错乱

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/5/23 21:47:00 [显示全部帖子]

应该是代码逻辑有问题。具体请上传实例测试

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/6 21:31:00 [显示全部帖子]

一时半会看不懂您的业务逻辑,这么庞大的系统只能自己跟踪调试了。最有效的方法就是写日志跟踪每一步的操作

提几个建议
1、不要在datacolchanged使用current这种用法【Tables("销售定单主表").current】,如果要取当前行,应该是e.datarow
2、【销售定单主表】窗口撤销按钮有很大问题:
With Tables("销售定单主表")
    If .Current IsNot Nothing Then
        Dim drs As List (of DataRow)=.Current.DataRow.getchildrows("销售定单明细表")
        For Each dr As DataRow In drs
            dr.reject()
        Next
        .Current.DataRow.Reject() '假设这句代码执行了,并且这一行是新增行,那么这个行会被删除,删除后如果有下一行,那么会选中下一行
    End If
End With

注意看上面红色文字,这时"销售定单主表"选中的已经是另外一行的数据了,也就是说下面的撤销操作全部都是另外一行的子表,然后如果另外一行也是新增行,这一行也会被删除,如果不是新增行,这一行更改的内容会被还原
With Tables("销售定单主表")
    If .Current IsNot Nothing Then
        Dim dis As List (of DataRow)=.Current.DataRow.getchildrows("安装费额外增加明细表")
        For Each di As DataRow In dis
            di.reject()
        Next
        .Current.DataRow.Reject()
    End If
End With

所以对于主表.Current.DataRow.Reject()应该放到最后再执行一次即可

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/7 10:38:00 [显示全部帖子]

保存前看看【销售定单主表】,是选中A行,还是选中了新增的行?是双击主表打开的编辑窗口?还是双击窗口副本表打开的编辑窗口?

窗口副本表注意做一下联动:http://www.foxtable.com/webhelp/topics/2631.htm

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/7 11:07:00 [显示全部帖子]

联动肯定有效果,如果没有应该是设置不对,代码发上来看看



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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/7 11:25:00 [显示全部帖子]

点击新增按钮打开编辑窗口后,看看副本表和主表是不是都能够看到新增行,并且都选中的新增行。如果没有应该是有什么代码影响了,比如表格做了筛选,新增行没有录入符合筛选条件的数据前,是不会显示在表格里的,也就不会选中了

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/10 14:02:00 [显示全部帖子]

什么事件出错,贴出完整代码说明
图片点击可在新窗口打开查看

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/10 14:17:00 [显示全部帖子]

If Forms("销售定单主表主窗口").Opened andalso e.Table.Current isnot nothing Then '如果窗口已经打开
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("销售定单主表主窗口_table1").FindRow(dr)
    If wz >=0 Then
        Tables("销售定单主表主窗口_table1").Position = wz
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/10 14:47:00 [显示全部帖子]

主表和副本,互相定位导致的问题。就好比2个人太客气了,你鞠一躬,我鞠一躬,你还一躬,我还一躬,无休止

If Forms("销售定单主表主窗口").Opened andalso e.Table.Current isnot nothing Then '如果窗口已经打开
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("销售定单主表主窗口_table1").FindRow(dr)
    If wz >=0 Then
systemready = false
        Tables("销售定单主表主窗口_table1").Position = wz
systemready = true
    End If
End If

 回到顶部