以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  高效流水账设计  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=159084)

--  作者:爱相随
--  发布时间:2020/12/13 14:08:00
--  高效流水账设计
老师,下面代码是流水账设计,当条件只有订单编号时运行代码就没问题 ,加入产品编码条件后就提示如下错误信息:
.NET Framework 版本:2.0.50727.8806
Foxtable 版本:2017.10.26.1
错误所在事件:表,收款明细表, DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“[_SortKey] Desc”到类型“Integer”的转换无效。
输入字符串的格式不正确。
下面是事件代码:
Select Case e.DataCol.Name
    Case "已收金额","本次收款金额","订单编号","产品编码"
        Dim dr As DataRow
        Dim mr As DataRow = e.DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [订单编号] = \'" & mr("订单编号") & "\'", "[_SortKey] Desc And [产品编码] = \'" & mr("产品编码") & "\'", "[_SortKey] Desc")
        If dr Is Nothing Then
            mr("已收金额") = 0
            dr = mr
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [订单编号] = \'" & dr("订单编号") & "\'", "[_SortKey] And [产品编码] = \'" & dr("产品编码") & "\'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("已收金额") = drs(i-1)("本次收款金额") + drs(i-1)("已收金额") 
        Next
        If e.DataCol.Name = "订单编号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue And "产品编码" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [订单编号] = \'" & e.OldValue & "\'", "[_SortKey] Desc And [产品编码] = \'" & e.OldValue & "\'", "[_SortKey] Desc")
            If dr Is Nothing Then
                dr = e.DataTable.Find("[订单编号] = \'" & e.OldValue & "\'", "[_SortKey] and [产品编码] = \'" & e.OldValue & "\'", "[_SortKey]")
                If dr IsNot Nothing Then
                    dr("已收金额") = 0
                End If
            End If
            If dr IsNot Nothing Then
                drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [订单编号] = \'" & dr("订单编号") & "\'", "[_SortKey] And [产品编码] = \'" & dr("产品编码") & "\'", "[_SortKey]")
                For i As Integer = 1 To drs.Count - 1
                    drs(i)("已收金额") = drs(i-1)("已收金额") + drs(i-1)("本次收款金额") 
                Next
            End If
        End If
End Select

--  作者:有点蓝
--  发布时间:2020/12/13 20:51:00
--  
Dim drs As List(of DataRow)
dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [订单编号] = \'" & mr("订单编号") & "\'  And [产品编码] = \'" & mr("产品编码") & "\'", "[_SortKey] Desc")

drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [订单编号] = \'" & dr("订单编号") & "\' And [产品编码] = \'" & dr("产品编码") & "\'", "[_SortKey]")

--  作者:爱相随
--  发布时间:2020/12/13 23:15:00
--  
谢谢老师不辞辛苦的回复,真的感谢!!
--  作者:爱相随
--  发布时间:2020/12/13 23:17:00
--  
不过又提示以下错误(其他代码比照老师的逻辑做了修改也提示这个错误):
.NET Framework 版本:2.0.50727.8806
Foxtable 版本:2017.10.26.1
错误所在事件:表,收款明细表, DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“产品编码”到类型“Boolean”的转换无效。
输入字符串的格式不正确。

--  作者:有点蓝
--  发布时间:2020/12/13 23:25:00
--  
先看几遍:http://www.foxtable.com/webhelp/topics/1284.htm

其他地方参考2楼的方式改正

--  作者:爱相随
--  发布时间:2020/12/26 23:12:00
--  
老师,看不懂这个错误原因,知道事件所在地方,但看不明白错误的原因.
.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2017.10.26.1
错误所在事件:表,客商科目明细表, DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Conversion from string "客商编码" to type \'Boolean\' is not valid.
Input string was not in a correct format.
[此贴子已经被作者于2020/12/26 23:13:01编辑过]

--  作者:有点蓝
--  发布时间:2020/12/27 20:47:00
--  
从字符串“客商编码”到类型“Boolean”的转换无效。