以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]窗口绑定内容和实际表选择内容不同步 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103717) |
-- 作者:whyxd -- 发布时间: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"的内容却变成了下一行的内容。
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2017/7/15 13:14:00 -- 回复:(有点蓝)With Tables("表A") If... 可以在表事件上调整么?》 因为我类似窗口有很多,而且每个窗口好几个按钮,上一行、下一行、首行、最后一行。。。如果在每个按钮上空值的话,不太好管理。
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2017/7/16 8:55:00 -- 回复:(有点蓝)这个可能是个bug,这样处理一下If e.... 这样也可以,测试过了,没有问题。多谢耐心指导 |