Foxtable(狐表)用户栏目专家坐堂 → beginedit报错


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

主题:beginedit报错

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
beginedit报错  发帖心情 Post By:2019/4/13 9:43:00 [只看该作者]

老师,我咨询一个问题

我写了段代码在DATACOLCHANGED里面,即任何列有输入,就将位置移到表的最后并打开一个窗口(类似于传统输入的窗口)。
在该窗口我设置了一个保存按钮和一个取消按钮,保存就是将当前行保存并关闭窗口,取消按钮的就是将当前的行删除。

这样我输入的时候就是新增行并给任意一列随便赋个值,这时自动会打开窗口,修改后保存,如果取消则删除该行。
但是发现按取消按钮后会报错

.NET Framework 版本:2.0.50727.8937
Foxtable 版本:2018.3.9.1
错误所在事件:窗口,mainmenu,Button1,Click
详细错误信息:
此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据

这是什么意思?报错的按钮BUTTON1是主菜单负责增加行的那个按钮,就是新增一行并赋值的那个按钮。
[此贴子已经被作者于2019/4/13 9:44:17编辑过]

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/13 9:47:00 [只看该作者]

没看懂,上传实例看看。

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
  发帖心情 Post By:2019/4/13 10:12:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:learning.zip

帮忙看看,我这个取消按钮有什么问题
[此贴子已经被作者于2019/4/13 10:14:20编辑过]

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/13 10:50:00 [只看该作者]

单独一个窗口看不出什么问题,请上传完整实例

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
  发帖心情 Post By:2019/4/13 11:13:00 [只看该作者]

窗口MAINMENU
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip

导入订单 按钮
增加新客户
取消
报错

[此贴子已经被作者于2019/4/13 11:14:20编辑过]

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/13 11:37:00 [只看该作者]

这样的用法在逻辑上是有问题的:

        '添加新客户
        If Result = DialogResult.Yes Then
            Dim cname As String
            Dim newctarget As DataRow
            Dim newcsource As DataRow
            For Each ccode As String In ccodes
                cname = DataTables("temperorder").getcomboliststring("clientname","[client] = '" & ccode & "'")
                newcsource = DataTables("temperorder").Find("[client] = '"& ccode &"'")
                newctarget = DataTables("CLIENT").addnew()
                newctarget("name") = newcsource("clientname")
上面赋值后会触发datacolchanged,弹出编辑窗口,由于是模式窗口,下面的代码被阻塞,窗口点击取消,这行被删除,关闭窗口后会继续执行下面的代码,下面代码还给这个被删除的行赋值,自然就出错了。
                newctarget("code") = newcsource("client")
            Next
        Else

个人建议应该在窗口里添加一个客户表的副本,然后新的客户全部在副本里新增,这个过程中不要弹出编辑窗口。导入完毕后,点击副本的行再弹出编辑窗口。

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


加好友 发短信
等级:婴狐 帖子:19 积分:215 威望:0 精华:0 注册:2018/4/12 22:17:00
  发帖心情 Post By:2019/4/13 12:12:00 [只看该作者]

明白了,我把打开窗口的操作用代码来做,不用表事件自动打开吧

 回到顶部