以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新增行时引起原来的行状态改变  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174798)

--  作者:whx007
--  发布时间:2022/2/7 3:59:00
--  新增行时引起原来的行状态改变

图片点击可在新窗口打开查看此主题相关图片如下:屏幕截图 2022-02-06 214824.png
图片点击可在新窗口打开查看

如上图,当点击新增行按钮“New QUOTN”的时候,原来行(上一行)的状态改变,不知道什么原因。
New QUOTN按钮代码:
Dim id As Integer = DataTables("报价单").Compute("Max(_Identify)")
Dim Filter As String = "[_Identify] > " & id
DataTables("报价单").AppendLoad(Filter, False)

Dim sts() As String = {"dropbox2","DropBox4"}
For Each st As String In sts
    If e.Form.Controls(st).value Is Nothing Then
        MessageBox.show("Please enter the name,phone number!","Remind")
        Return
    End If
Next

Tables("报价单").AllowEdit  = True
Dim dr As Row = Tables("报价单").AddNew
dr("日期") = Date.Today
dr("客户名称") = e.Form.Controls("DropBox4").Text
dr("客户电话") = e.Form.Controls("DropBox2").Text
\'dr.Save

Dim xzcp As WinForm.Button = e.Form.Controls("新增产品")
xzcp.Enabled = True

Dim bc As WinForm.Button = e.Form.Controls("保存")
bc.Enabled = True

e.Form.Controls("Button1").Enabled =False

报价单DataColChanged代码:
If e.DataCol.Name = "订单号" Then \'发生变化的是产品列和订单号
    \'则累计订单出库明细表中同名产品总的销售量,然后赋值给变动行的已提数量列
    e.DataRow("总金额") = DataTables("报价明细表").Compute("sum(金额)","订单号 = \'" & e.DataRow("订单号") & "\'")
    e.DataRow("总数量") = DataTables("报价明细表").Compute("sum(数量)","订单号 = \'" &  e.DataRow("订单号") & "\'")
    e.DataRow("合计成本") = DataTables("报价明细表").Compute("sum(合计成本)","订单号 = \'" &  e.DataRow("订单号") & "\'")
    e.DataRow("合计成本") = iif(e.DataRow("合计成本") = Nothing,0, e.DataRow("合计成本"))
End If

Select Case  e.DataCol.Name
    Case  "总金额" ,"折扣","已付款","合计成本"
        e.DataRow("GrandTotal")  = e.DataRow("总金额")  - e.DataRow("折扣")
        e.DataRow("已付款") = e.DataRow("GrandTotal")
        e.DataRow("未付款") = e.DataRow("GrandTotal") - e.DataRow("已付款")
        e.DataRow("销售毛利") = e.DataRow("GrandTotal") - e.DataRow("合计成本") - DataTables("花销").Compute("sum(花销)","订单号 = \'" & e.DataRow("订单号") & "\'")
End Select

报价单DataRowAdding代码:
e.DataRow("编辑者") = User.name

Static Index As Integer = 99999
e.DataRow("订单号") = Format(Date.Today(),"BJyyMMdd") & Index
Index = Index - 1

--  作者:有点蓝
--  发布时间:2022/2/7 8:57:00
--  
1、调试一下哪一句代码后状态改变?
2、去掉所有表事件,试试还会不会改变状态

--  作者:whx007
--  发布时间:2022/2/7 22:33:00
--  
有时候有,有时候没有,很奇怪
--  作者:有点蓝
--  发布时间:2022/2/7 22:41:00
--  
可能是碰到特定的数据,多个表事件之间互相触发影响了。多测试看看输入什么数据会有问题
--  作者:whx007
--  发布时间:2022/2/7 23:35:00
--  
每次输入的只是名字和电话号码,即字母和数字
--  作者:有点蓝
--  发布时间:2022/2/8 8:35:00
--  
{"dropbox2","DropBox4"}下拉窗口是不是有表格,表格是不是用了双击事件?
--  作者:whx007
--  发布时间:2022/2/8 23:02:00
--  
是一个客户表,没有双击事件
--  作者:有点蓝
--  发布时间:2022/2/8 23:17:00
--  
做个例子发上来测试吧