以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  下面的代码,怎么改 能够识别文本编号?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77540)

--  作者:jinzhengbe
--  发布时间:2015/11/20 1:50:00
--  下面的代码,怎么改 能够识别文本编号?


If Tables("发货单号.发货公斤").Count = 0 Then
    Return  \'那么返回
Else If Tables("发货单号.发货公斤").Count > 0 Then
e.DataRow("bill") = Tables("发货单号.发货公斤").Compute("Max(bill)") + 1
End If

 

代码如上

 

如果输入数字,正常运行,没有问题

例如 我输入    1234

 

 

如果在bill里输入文本加数子就报错

例如我 输入 a111

 

错误所在事件:表,发货公斤,DataRowAdding
详细错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.InvalidCastException: 从字符串“a1”到类型“Double”的转换无效。 ---> System.FormatException: 输入字符串的格式不正确。

 

 

请问这种情况应该怎么改? 非常感谢!!!

 

bill本身为文本 不是数字 字段

 

[此贴子已经被作者于2015/11/20 1:50:58编辑过]

--  作者:y2287958
--  发布时间:2015/11/20 6:34:00
--  
改为字符型
--  作者:Hyphen
--  发布时间:2015/11/20 8:45:00
--  

文本编号不能进行简单的+1取值,必须有一定的规律,便于编程处理

 

参考http://www.foxtable.com/help/topics/3008.htm

 


--  作者:大红袍
--  发布时间:2015/11/20 9:17:00
--  

参考代码

 

Dim str As String = "abcef0180"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "[^1-9]+|[0-9]+")
If mc.count = 2 Then
    str = mc(0).value & mc(1).value + 1
    msgbox(str)
End If


--  作者:jinzhengbe
--  发布时间:2015/11/20 15:46:00
--  
研究了两天,还是不明白,有没有相关的例子啊?除了openqq什么那个就没有别的办法了么?

[此贴子已经被作者于2015/11/20 15:47:22编辑过]

--  作者:大红袍
--  发布时间:2015/11/20 16:02:00
--  

汗,看4楼啊。

 

 

Dim str As String = Tables("发货单号.发货公斤").Compute("Max(bill)")

Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "[^1-9]+|[0-9]+")
If mc.count = 2 Then
    str = mc(0).value & mc(1).value + 1
    msgbox(str)

    e.DataRow("bill") = sttr
End If