以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助,代码冲突!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=115529)

--  作者:hyr88
--  发布时间:2018/3/8 15:50:00
--  求助,代码冲突!
\'【单号】生成
If e.DataCol.Name = "name" Then
     If e.DataRow.IsNull("name") Then
        e.DataRow("order_number") = 0
Else
          Dim ond As Date = Date.Now
          Dim ondt As String = cstr(Format(ond,"yyMMddHHmmss"))
            e.DataRow("order_number") = ondt
End If
End If

\'【产品费用】统计=明细总金额{跨表统计}
Select Case e.DataCol.Name
    Case  "order_number"
    If e.DataRow("order_number") IsNot Nothing Then
        Dim Filter As String  = "order_number = " & e.DataRow("order_number")
        e.DataRow("income") = DataTables("crm").Compute("Sum(income)", Filter)
    End If
End Select
----------------------------------------------
这2段代码,在同个表。
1、第一段代码:如果删除名字,就会清空单号。
2、总统计是根据单号来统计明细表的总金额。

如果写入了名字,后来又删除名字。同时也会删除单号。(明细表里肯定是还没有相挂钩数据的)

软件就会提示错误:
.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.3.9.1
错误所在事件:表,clm,DataColChanged
详细错误信息:
调用的目标发生了异常。
语法错误:“=”运算符后缺少操作数。

有没可解决的方法呢?
[此贴子已经被作者于2018/3/8 15:51:06编辑过]

--  作者:有点甜
--  发布时间:2018/3/8 15:55:00
--  

If e.DataCol.Name = "name" Then
    If e.DataRow.IsNull("name") Then
        e.DataRow("order_number") = 0
    Elseif e.DataRow("order_number") = nothing then
        Dim ond As Date = Date.Now
        Dim ondt As String = cstr(Format(ond,"yyMMddHHmmss"))
        e.DataRow("order_number") = ondt
    End If
End If


\'【产品费用】统计=明细总金额{跨表统计}
Select Case e.DataCol.Name
    Case  "order_number"
        If e.DataRow("order_number") <> Nothing Then
            Dim Filter As String  = "order_number = \'" & e.DataRow("order_number") & "\'"
            e.DataRow("income") = DataTables("crm").Compute("Sum(income)", Filter)
        End If
End Select


--  作者:hyr88
--  发布时间:2018/3/8 16:07:00
--  
这样单号 生成有问题。
第一次这行从来没有填写过数据的,是可以生成单号的。
但是这行内容删了,再次写入,单号就生成不了了。永远只能是为0了。

--  作者:有点甜
--  发布时间:2018/3/8 17:18:00
--  

If e.DataCol.Name = "name" Then
    If e.DataRow.IsNull("name") Then
        e.DataRow("order_number") = 0
    Else
        Dim ond As Date = Date.Now
        Dim ondt As String = cstr(Format(ond,"yyMMddHHmmss"))
        e.DataRow("order_number") = ondt
    End If
End If


\'【产品费用】统计=明细总金额{跨表统计}
Select Case e.DataCol.Name
    Case  "order_number"
        If e.DataRow("order_number") <> Nothing Then
            Dim Filter As String  = "order_number = \'" & e.DataRow("order_number") & "\'"
            e.DataRow("income") = DataTables("crm").Compute("Sum(income)", Filter)
        End If
End Select


--  作者:有点甜
--  发布时间:2018/3/8 17:19:00
--  
如果还有问题,做个foxtable实例上传上来测试。
--  作者:hyr88
--  发布时间:2018/3/8 17:32:00
--  
多谢!
基本OK了。内容清空后,单号就变0了。
这样用也可以。