Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口绑定内容和实际表选择内容不同步


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

主题:[求助]窗口绑定内容和实际表选择内容不同步

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


加好友 发短信
等级:童狐 帖子:204 积分:1904 威望:0 精华:0 注册:2016/2/17 12:11:00
[求助]窗口绑定内容和实际表选择内容不同步  发帖心情 Post By:2017/7/15 10:04:00 [只看该作者]

窗口1
绑定表:表A,窗口类型:停靠
按钮1 
代码:
With Tables("表A")
    If .Position < .Rows.count - 1  Then
        .Position = .position + 1
    Else
        msgbox("已经到达最后一张单据!")
    End If
End With

textbox1:
类型:texbox,绑定到:表A.number
表A
表事件 BeforeSelChange :

If e.OldRange.RowSel <> e.NewRange.RowSel '如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
        Dim r1 As Row = e.Table.Rows(e.NewRange.RowSel)'定义新选择的行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) '获得原来选择的行
        If r.IsNull("number")  Then  '如果编号为空
            e.Cancel = True
        End If
    End If
End If

现象:单击"按钮1",如果原来选择行是"number"列是空值,那么"表A"选择行不发生变化,但是"textbox1"的内容却变成了下一行的内容。

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


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

With Tables("表A")
    If .Position < .Rows.count - 1  Then
        If Tables("表A").current.IsNull("number") = False
            .Position = .position + 1
        End If
    Else
        msgbox("已经到达最后一张单据!")
    End If
End With

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


加好友 发短信
等级:童狐 帖子:204 积分:1904 威望:0 精华:0 注册:2016/2/17 12:11:00
回复:(有点蓝)With Tables("表A")    If...  发帖心情 Post By:2017/7/15 13:14:00 [只看该作者]

可以在表事件上调整么?》
因为我类似窗口有很多,而且每个窗口好几个按钮,上一行、下一行、首行、最后一行。。。如果在每个按钮上空值的话,不太好管理。

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


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

这个可能是个bug,这样处理一下

If e.OldRange.RowSel <> e.NewRange.RowSel '如果选择的是不同的行
    If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then '而且原来选择的是一个有效的数据行
        Dim r1 As Row = e.Table.Rows(e.NewRange.RowSel)'定义新选择的行
        Dim r As Row = e.Table.Rows(e.OldRange.Rowsel) '获得原来选择的行
        If r.IsNull("number")  Then  '如果编号为空
            e.Cancel = True
e.Table.Position = e.OldRange.RowSel 
        End If
    End If
End If

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


加好友 发短信
等级:童狐 帖子:204 积分:1904 威望:0 精华:0 注册:2016/2/17 12:11:00
回复:(有点蓝)这个可能是个bug,这样处理一下If e....  发帖心情 Post By:2017/7/16 8:55:00 [只看该作者]

这样也可以,测试过了,没有问题。多谢耐心指导图片点击可在新窗口打开查看

 回到顶部