以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  条件取值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107721)

--  作者:zoyong
--  发布时间:2017/10/8 17:14:00
--  条件取值
根据收入支出、交易详细 给 对方账号 列附值 
以收入支出为取值条件,取交易详细中指定的两个账号其中一串数字附值给对方账号列
注:收入时   账号为第一串数字     支出时:账号为第二串数字

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:附值.foxdb



Dim Tel As String =  e.DataRow("交易详细信息")
Dim Parts() As String = Tel.Split("账号 ")
If e.DataRow("收入支出") = "收入" Then
    e.DataRow("对方账号") = Parts(0)
ElseIf e.DataRow("收入支出") = "支出" Then
    e.DataRow("对方账号") = Parts(1)
End If


.NET Framework 版本:2.0.50727.8689
Foxtable 版本:2017.8.19.1
错误所在事件:表,cw_lsbzzs, DataColChanged
详细错误信息:
调用的目标发生了异常。
索引超出了数组界限。
[此贴子已经被作者于2017/10/8 17:22:47编辑过]

--  作者:有点甜
--  发布时间:2017/10/8 17:23:00
--  

datacolchanged事件

 

Select Case e.DataCol.name
    Case "收入支出", "交易详细"
        Dim str As String = e.DataRow("交易详细")
        e.DataRow("对方账号") = Nothing
        If str > "" Then
            Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "[0-9]{10,}")
            If mc.count >= 2 Then
                If e.DataRow("收入支出") = "收入" Then
                    e.DataRow("对方账号") = mc(0).value
                ElseIf e.DataRow("收入支出") = "支出" Then
                    e.DataRow("对方账号") = mc(1).value
                End If
            End If
        End If
End Select


--  作者:zoyong
--  发布时间:2017/10/8 17:26:00
--  
代码有效   谢谢有点甜老师     
我的代码   错在哪里了

Dim Tel As String =  e.DataRow("交易详细信息")
Dim Parts() As String = Tel.Split("账号 ")
If e.DataRow("收入支出") = "收入" Then
    e.DataRow("对方账号") = Parts(0)
ElseIf e.DataRow("收入支出") = "支出" Then
    e.DataRow("对方账号") = Parts(1)
End If

--  作者:有点甜
--  发布时间:2017/10/8 17:34:00
--  

Split 函数,只能根据单个字符分割。

 

你可以试试

 

Dim Parts() As String = Tel.Replace("账号 ", "@").split("@")

 


--  作者:zoyong
--  发布时间:2017/10/20 13:52:00
--  
Dim Tel As String = e.DataRow("详细信息")
Dim Parts() As String = Tel.Split(" ")
If e.DataRow("用途") = Nothing Then
e.DataRow("用途") = parts(parts.Length-1)
End If
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:核销测试.foxdb


上面代码是可用,但是不完美
要求:有用途两个字时再取值填入,没有用途时则为空
[此贴子已经被作者于2017/10/20 13:54:57编辑过]

--  作者:有点甜
--  发布时间:2017/10/20 14:30:00
--  
Dim Tel As String = e.DataRow("详细信息")
Dim Parts() As String = Tel.Split(" ")
If tel.Contains("用途") Then
    e.DataRow("用途") = parts(parts.Length-1)
End If