Foxtable(狐表)用户栏目专家坐堂 → 索引和长度 问题


  共有1658人关注过本帖树形打印复制链接

主题:索引和长度 问题

帅哥哟,离线,有人找我吗?
yzyend
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:21 积分:304 威望:0 精华:0 注册:2016/8/18 16:30:00
索引和长度 问题  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点青
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/15 17:31:00 [只看该作者]

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

 

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

    '你本来的代码

End If


 回到顶部
帅哥哟,离线,有人找我吗?
yzyend
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:21 积分:304 威望:0 精华:0 注册:2016/8/18 16:30:00
  发帖心情 Post By: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

 回到顶部