以文本方式查看主题 - 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 -- 如图点击全屋易装销售公司,再点击销售定单主表,在销售订单的主表左上角点击新建,即会偶尔出现以上描述问题。 错乱如下图所示: 如客户名称为”沈家李秋云“和”九廷“的客户,是所属公司为“易装生产"的员工所建,保存后的客户信息和地址,将原本所属公司为”易装销售“的员工建的编号为”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编辑过]
|