以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  编号错乱  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=168786)

--  作者:lal021962
--  发布时间:2021/5/23 18:48:00
--  编号错乱
现在销售定单的编号是按照“用OpenQQ实现网络环境下的编号”这一章来做的,基本都可以实现不重复编号,但现在出现了一个问题。

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

--  作者:有点蓝
--  发布时间:2021/5/23 21:47:00
--  
应该是代码逻辑有问题。具体请上传实例测试
--  作者:lal021962
--  发布时间:2021/6/6 15:46:00
--  
如图点击全屋易装销售公司,再点击销售定单主表,在销售订单的主表左上角点击新建,即会偶尔出现以上描述问题。

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

错乱如下图所示:

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

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



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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2021/6/7 10:20:00
--  
问题基本上发现了,就是比如选中A行,然后在窗口上点击新增按钮,在新增行跳出的窗口点击保存。结果是窗口跳回到之前的A行了。
但是不知道逻辑错在哪里。

--  作者:lal021962
--  发布时间:2021/6/7 10:36:00
--  
光标未移动到新增行,但是代码用的也是“addnew”
--  作者:有点蓝
--  发布时间:2021/6/7 10:38:00
--  
保存前看看【销售定单主表】,是选中A行,还是选中了新增的行?是双击主表打开的编辑窗口?还是双击窗口副本表打开的编辑窗口?

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

--  作者:lal021962
--  发布时间:2021/6/7 10:57:00
--  
联动是之前就做过了,没有效果。
现在在“新增”按钮的“keyup”新增了如下代码:
Dim r As Row = Tables("销售定单主表_table1").AddNew()
Tables("销售定单主表_table1").position = r.index

不知道之后有没有效果

--  作者:有点蓝
--  发布时间:2021/6/7 11:07:00
--  
联动肯定有效果,如果没有应该是设置不对,代码发上来看看



--  作者:lal021962
--  发布时间: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编辑过]