以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计数据段之间的数量  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154167)

--  作者:裴保民
--  发布时间:2020/9/6 16:55:00
--  统计数据段之间的数量
有两个字段一个是起始哈,一个终止号都是文本类型,根据两者之间的数据怎样统计出多少数据(就像时间段统计一样)
--  作者:有点蓝
--  发布时间:2020/9/6 20:28:00
--  
数据是怎么样的?请举例说明
--  作者:裴保民
--  发布时间:2020/9/6 21:09:00
--  
 假如初始号段是015659890015CW002658  终止号段是 015659890015CW002667 共应该是10张  说明 其中CW 有可能是其他字符,并且位置不确定
--  作者:有点蓝
--  发布时间:2020/9/6 21:39:00
--  
尾号002658是不是固定6位数,如果是,可以处理,否则没有办法

dim s1 as string = "015659890015CW002658
dim s2 as string = "015659890015CW002667

dim d1 as integer = cint(s1.substring(s1.length - 6))
dim d2 as integer = cint(s2.substring(s2.length - 6))

msgbox(d2 - d1)

--  作者:裴保民
--  发布时间:2020/9/6 21:53:00
--  
截取后三位可以吗?


图片点击可在新窗口打开查看此主题相关图片如下:截图00.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/9/6 22:04:41编辑过]

--  作者:有点蓝
--  发布时间:2020/9/6 21:58:00
--  
s1.length - 3
--  作者:裴保民
--  发布时间:2020/9/6 22:12:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:截图01.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:截图02.jpg
图片点击可在新窗口打开查看

将代码写在
DataColChanged事件中
If e.DataCol.Name = "起始号"  Then
    If e.NewValue Is Nothing  Then
        e.DataRow("充值张数") = Nothing
    Else
        Dim s1 As String = e.DataRow("终止号")
        Dim s2 As String = e.DataRow("起始号")
        Dim d1 As Integer = cint(s1.substring(s1.length - 6))
        Dim d2 As Integer = cint(s2.substring(s2.length - 6))      
        e.DataRow("充值张数") = d1-d2
        Tables("充值凭证表").Save
    End  If
End  If

[此贴子已经被作者于2020/9/6 22:36:13编辑过]

--  作者:有点蓝
--  发布时间:2020/9/6 22:20:00
--  
调试技巧:http://www.foxtable.com/webhelp/topics/1485.htm

If e.DataCol.Name = "起始号"  Then
    If e.NewValue Is Nothing  Then
        e.DataRow("充值张数") = Nothing
    Else
        Dim s1 As String = e.DataRow("终止号")
        Dim s2 As String = e.DataRow("起始号")
msgbox(s1.length)
msgbox(s1.substring(s1.length - 6))
msgbox(s2.length)
msgbox(s2.substring(s2.length - 6))
        Dim d1 As Integer = CLng(s1.substring(s1.length - 6))
        Dim d2 As Integer = CLng(s2.substring(s2.length - 6))      
        e.DataRow("充值张数") = d1-d2
        Tables("充值凭证表").Save
    End  If
End  If

--  作者:裴保民
--  发布时间:2020/9/6 22:40:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:截图02.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/9/6 22:54:00
--  
做什么操作,什么代码引起的错误?