以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  变态测试产生的错误,请教解决办法。。  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=19489)

--  作者:reachtone
--  发布时间:2012/5/11 16:43:00
--  变态测试产生的错误,请教解决办法。。

打开foxtable,随便用哪个表,只保留一行数据,然后在命令窗口执行:

With CurrentTable
    .AddNew
    .Sort = "[_Identify] Desc"
    .Position = 0
End With

这个时候,一共是2行数据,新增加的行在上面。

 

然后,在当前表的BeforeSelChange事件中设置:

e.Table.Current.Delete

 

事件设置完成后,将光标从第一行移动到第二行,大大的红叉出现了!!


--  作者:reachtone
--  发布时间:2012/5/11 17:02:00
--  

此问题百思不得其解:本来就有2行数据,删除一行后应该还有一行的,为什么出错呢?

而且,这种错误很恐怖,大大的红叉,把客户都紧张坏了。

反复检查,才发现问题这里。请教解决办法。。


--  作者:狐狸爸爸
--  发布时间:2012/5/11 17:29:00
--  

不要在BeforeSelChange事件中删除行。


--  作者:reachtone
--  发布时间:2012/5/11 17:39:00
--  
以下是引用狐狸爸爸在2012-5-11 17:29:00的发言:

不要在BeforeSelChange事件中删除行。

但是,客户有这样的要求:在换行前,先判断当前行的指定内容是否为空,如果为空的话,就删除之。


--  作者:reachtone
--  发布时间:2012/5/11 17:42:00
--  
current和position都没有before事件,只有在beforeselchange事件中设置。
--  作者:狐狸爸爸
--  发布时间:2012/5/11 17:52:00
--  

想办法改变设计思路吧。

 


--  作者:reachtone
--  发布时间:2012/5/11 18:07:00
--  

估计这应该是bug了吧。建议还是抽空研究一下看看能否解决。。

实在不行,只有不允许离开当前行了。或者由用户将无效的行手工删除。

 


图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看

--  作者:reachtone
--  发布时间:2012/5/12 11:14:00
--  

这个绝对是bug,还望老六重视。

我想着变通一下,不用删除行了,在beforeselchange中用以下代码撤销修改,竟然一样出现错误:

e.Table.Current.DataRow.Reject

 

换行前对当前记录的完整性进行判断,如果不完整就撤销修改(新增行的话就自动删除了),这是很非常合理的应用需求!


--  作者:FoxMan
--  发布时间:2012/5/12 11:23:00
--  

試試:BeforeAddDataRow


--  作者:reachtone
--  发布时间:2012/5/12 11:25:00
--  

狐表在对同一行、不同列的数据处理中,非常严谨,相关事件很丰富。

但对于跨行就很弱了,不仅current和position都没有before事件,没办法在换行前进行判断;而且在selchange事件中不能进行行数据的delete或reject处理。

实在想不出其它什么变通的解决思路,最下策只有“不能离开当前行或者手工删除无效行”,但这种处理方法实在太过弱智!