以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  索引和长度 问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92884)

--  作者:yzyend
--  发布时间:2016/11/15 17:18:00
--  索引和长度 问题
表:datacolchanged中代码如下:
Dim s1 As String =  e.DataRow("收款单位")
Dim s3 As String
Dim s4 As String
MessageBox.Show(1)
s3 = s1.Substring(0,4).Insert(4,"现金流水账")
s4 = s1.Substring(0,4).Insert(4,"银行流水账")
MessageBox.Show(2)
If e.DataCol.name = "入账" AndAlso e.newvalue = True And e.DataRow("收款单位") <> Nothing Then
MessageBox.Show(3)
    If e.DataRow("去向") = "银行" Then
MessageBox.Show(4)
        e.DataRow("客户名称") = s4
MessageBox.Show(5)
        Dim dr As DataRow = DataTables(s4).find("单据编号 = \'" & e.DataRow("收款单编号") & "\'")
        If dr Is Nothing Then
            dr = DataTables(s4).AddNew()
            dr("收入") = e.DataRow("金额")
        End If
    End If
    If e.DataRow("去向") = "储蓄卡" Then
        e.DataRow("客户名称") = s3
        Dim dt As DataRow = DataTables(s3).find("单据编号 = \'" & e.DataRow("收款单编号") & "\'")
        If dt Is Nothing Then
            dt = DataTables(s3).AddNew()
            dt("收入") = e.DataRow("金额")
        End If
    End If
End If

调试 报“2”,老提示:
.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:表,收款2,DataColChanged
详细错误信息:
调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length

开发版,重启也无效。其他动作执行正常,就是提示报错,用命令来调试也没问题。  

目的: 如 收款单位为: 北京**电子有限公司   找两个表:北京**银行流水账   北京**现金流水账  。
该表中只有这一个代码,其他事件中无代码。

请帮我看一下,什么原因?

[此贴子已经被作者于2016/11/15 17:22:52编辑过]

--  作者:有点青
--  发布时间:2016/11/15 17:31:00
--  

要判断一下列名和字符长度

 

If e.DataCol.Name = "收款单位" AndAlso e.DataRow("收款单位").length >= 4 Then

    \'你本来的代码

End If


--  作者:yzyend
--  发布时间:2016/11/15 17:53:00
--  
谢谢!
这样就好了:
If e.DataCol.name = "入账" AndAlso e.newvalue = True And e.DataRow("收款单位") <> Nothing And e.DataRow("收款单位").length > = 4 Then
    Dim s1 As String =  e.DataRow("收款单位")
    Dim s3 As String
    Dim s4 As String
    s3 = s1.Substring(0,4).Insert(4,"现金流水账")
    s4 = s1.Substring(0,4).Insert(4,"银行流水账")
    If e.DataRow("去向") = "银行" Then
        e.DataRow("客户名称") = s4
        Dim dr As DataRow = DataTables(s4).find("单据编号 = \'" & e.DataRow("收款单编号") & "\'")
        If dr Is Nothing Then
            dr = DataTables(s4).AddNew()
            dr("收入") = e.DataRow("金额")
        End If
    End If
    If e.DataRow("去向") = "储蓄卡" Then
        e.DataRow("客户名称") = s3
        Dim dt As DataRow = DataTables(s3).find("单据编号 = \'" & e.DataRow("收款单编号") & "\'")
        If dt Is Nothing Then
            dt = DataTables(s3).AddNew()
            dt("收入") = e.DataRow("金额")
        End If
    End If
End If