Foxtable(狐表)用户栏目专家坐堂 → 编号错乱


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

主题:编号错乱

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


加好友 发短信
等级:幼狐 帖子:161 积分:1240 威望:0 精华:0 注册:2019/10/12 19:54:00
编号错乱  发帖心情 Post By:2021/5/23 18:48:00 [只看该作者]

现在销售定单的编号是按照“用OpenQQ实现网络环境下的编号”这一章来做的,基本都可以实现不重复编号,但现在出现了一个问题。

建单保存后,新建单的内容会偶尔将其它编号的定单内容覆盖,如新建保存20210523001编号的定单后,其客户名称会将编号为20210522001的定单的客户名称覆盖,请问是何原因。

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


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

应该是代码逻辑有问题。具体请上传实例测试

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


加好友 发短信
等级:幼狐 帖子:161 积分:1240 威望:0 精华:0 注册:2019/10/12 19:54:00
  发帖心情 Post By:2021/6/6 15:46:00 [只看该作者]

如图点击全屋易装销售公司,再点击销售定单主表,在销售订单的主表左上角点击新建,即会偶尔出现以上描述问题。

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

错乱如下图所示:

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

如客户名称为”沈家李秋云“和”九廷“的客户,是所属公司为“易装生产"的员工所建,保存后的客户信息和地址,将原本所属公司为”易装销售“的员工建的编号为”XSDD202106060003“和”XSDD202106060004“的销售定单的原本内容覆盖了。



[此贴子已经被作者于2021/6/7 9:31:50编辑过]

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


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

一时半会看不懂您的业务逻辑,这么庞大的系统只能自己跟踪调试了。最有效的方法就是写日志跟踪每一步的操作

提几个建议
1、不要在datacolchanged使用current这种用法【Tables("销售定单主表").current】,如果要取当前行,应该是e.datarow
2、【销售定单主表】窗口撤销按钮有很大问题:
With Tables("销售定单主表")
    If .Current IsNot Nothing Then
        Dim drs As List (of DataRow)=.Current.DataRow.getchildrows("销售定单明细表")
        For Each dr As DataRow In drs
            dr.reject()
        Next
        .Current.DataRow.Reject() '假设这句代码执行了,并且这一行是新增行,那么这个行会被删除,删除后如果有下一行,那么会选中下一行
    End If
End With

注意看上面红色文字,这时"销售定单主表"选中的已经是另外一行的数据了,也就是说下面的撤销操作全部都是另外一行的子表,然后如果另外一行也是新增行,这一行也会被删除,如果不是新增行,这一行更改的内容会被还原
With Tables("销售定单主表")
    If .Current IsNot Nothing Then
        Dim dis As List (of DataRow)=.Current.DataRow.getchildrows("安装费额外增加明细表")
        For Each di As DataRow In dis
            di.reject()
        Next
        .Current.DataRow.Reject()
    End If
End With

所以对于主表.Current.DataRow.Reject()应该放到最后再执行一次即可

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


加好友 发短信
等级:幼狐 帖子:161 积分:1240 威望:0 精华:0 注册:2019/10/12 19:54:00
  发帖心情 Post By:2021/6/7 10:20:00 [只看该作者]

问题基本上发现了,就是比如选中A行,然后在窗口上点击新增按钮,在新增行跳出的窗口点击保存。结果是窗口跳回到之前的A行了。
但是不知道逻辑错在哪里。

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


加好友 发短信
等级:幼狐 帖子:161 积分:1240 威望:0 精华:0 注册:2019/10/12 19:54:00
  发帖心情 Post By:2021/6/7 10:36:00 [只看该作者]

光标未移动到新增行,但是代码用的也是“addnew”

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


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

保存前看看【销售定单主表】,是选中A行,还是选中了新增的行?是双击主表打开的编辑窗口?还是双击窗口副本表打开的编辑窗口?

窗口副本表注意做一下联动:http://www.foxtable.com/webhelp/topics/2631.htm

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


加好友 发短信
等级:幼狐 帖子:161 积分:1240 威望:0 精华:0 注册:2019/10/12 19:54:00
  发帖心情 Post By:2021/6/7 10:57:00 [只看该作者]

联动是之前就做过了,没有效果。
现在在“新增”按钮的“keyup”新增了如下代码:
Dim r As Row = Tables("销售定单主表_table1").AddNew()
Tables("销售定单主表_table1").position = r.index

不知道之后有没有效果

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/7 11:07:00 [只看该作者]

联动肯定有效果,如果没有应该是设置不对,代码发上来看看



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


加好友 发短信
等级:幼狐 帖子:161 积分:1240 威望:0 精华:0 注册:2019/10/12 19:54:00
  发帖心情 Post By:2021/6/7 11:15:00 [只看该作者]

在销售定单主表的current中写如下代码:
If Forms("销售定单主表主窗口_table1").Opened Then '如果窗口已经打开
    Dim dr As DataRow = e.Table.Current.DataRow
    Dim wz As Integer = Tables("销售定单主表主窗口_table1").FindRow(dr)
    If wz >=0 Then
        Tables("销售定单主表主窗口_table1").Position = wz
    End If
End If

在销售定单主表住窗口的tables1的current中加入如下代码:
Dim dr As DataRow = e.Table.Current.DataRow
 Dim wz As Integer = Tables("销售定单主表").FindRow(dr)
 If wz >=0 Then
      Tables("销售定单主表").Position = wz
 End  If


以下内容是专门发给有点蓝浏览




[此贴子已经被作者于2021/6/7 11:27:28编辑过]

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