Foxtable(狐表)用户栏目专家坐堂 → 变态测试产生的错误,请教解决办法。。


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

主题:变态测试产生的错误,请教解决办法。。

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
变态测试产生的错误,请教解决办法。。  发帖心情 Post By:2012/5/11 16:43:00 [显示全部帖子]

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

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

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

 

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

e.Table.Current.Delete

 

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


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/11 17:02:00 [显示全部帖子]

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

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

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


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/11 17:39:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-5-11 17:29:00的发言:

不要在BeforeSelChange事件中删除行。

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


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/11 17:42:00 [显示全部帖子]

current和position都没有before事件,只有在beforeselchange事件中设置。

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/11 18:07:00 [显示全部帖子]

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

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

 


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

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/12 11:14:00 [显示全部帖子]

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

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

e.Table.Current.DataRow.Reject

 

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


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/12 11:25:00 [显示全部帖子]

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

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

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


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/12 11:28:00 [显示全部帖子]

以下是引用FoxMan在2012-5-12 11:23:00的发言:

試試:BeforeAddDataRow

这个需求是对当前行的完整性进行判断的,不能用beforeadddatarow。因为数据行未必就是用add新增的,有的是对已有数据进行修改。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/12 11:40:00 [显示全部帖子]

其实,我很清楚,以上各种问题的出现,都是因为客户的倒序要求导致的。

正常情况下,我们都是顺序处理数据行的,新增加的行都在下面,foxtable应付起来没问题。

现在这个客户要求必须是倒序,老的记录在下面,新增加的行在最上面。


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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2012/5/13 10:51:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-5-13 9:43:00的发言:

如果需要新增行在前面,可以这样啊:

 

Tables("表A").Position = 0
Tables("表A").InsertNew()

在排序状态下是不能使用InsertNew的。客户的要求是先将数据倒序排列,然后将新增的记录行在上面.

您老人家还是处理一下上面反映的问题吧,我已经没辙了 图片点击可在新窗口打开查看


 回到顶部
总数 13 1 2 下一页