以文本方式查看主题 - 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 |