VB实现两位流水号递增,但是排除字母

allbluekos 2015-04-25 04:57:29

代码如下:【没有实现取最大的两位数,TEXTBOX1里面只显示01,应该显示03】
【注意:请在VB里面实现,因为C字段数据已经是读取处理后的】
mycommand.CommandText = "select C from B"
mycommand.Connection = mycn
Try
mycn.Open()
Dim mysqlreader As Data.SqlClient.SqlDataReader = mycommand.ExecuteReader
mysqlreader.Read()
If IsNumeric(mysqlreader.GetString(0)) = True And Len(mysqlreader.GetString(0)) = 2 Then ‘判断C的值是否为2位数字’
TextBox1.Text = Trim(a) & mysqlreader.GetString(0) ‘此处是没有实现的地方’
Else
TextBox1.Text = Trim(a) + "01"
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
...全文
536 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
allbluekos 2015-04-27
  • 打赏
  • 举报
回复
原来是这里出问题了:substring(SeriesID,len('" & a & "')+1,len(SeriesID)-len('" & a & "') 最后一个参数直接改成2就可以了,substring(SeriesID,len('" & a & "')+1,2) , 奇怪,如果 &a&= F01 也应该不会出错啊,SQL 里面运行也是通过, 后来TRIM(A),试过也是不行。
allbluekos 2015-04-27
  • 打赏
  • 举报
回复
现在用另外一个方法去做,当a是F等一位就不会出错,当a值是F01时候,出错提示substring函数的长度参数无效 。代码如下: Dim a As String = CStr(Strings.Right(TreeView1.SelectedNode.Text, Len(TreeView1.SelectedNode.Text) - InStr(1, TreeView1.SelectedNode.Text, "_"))) mycn.ConnectionString = "server=localhost;database=kos;uid=sa;pwd=0000;" mycommand.CommandText = "SELECT ISNULL(max(substring(SeriesID,len('" & a & "')+1,len(SeriesID)-len('" & a & "'))),0) FROM Series WHERE SeriesID Like'[" & a & "]%' and len(substring(SeriesID,len('" & a & "')+1,len(SeriesID)-len('" & a & "')))=2 and PATINDEX('%[0-9]%',substring(SeriesID,len('" & a & "')+1,len(SeriesID)-len('" & a & "')))=1"
vansoft 2015-04-26
  • 打赏
  • 举报
回复
select top 1 c from b where len(c)=2 order by c desc 倒序取C长度为2的最大的一条。 然后加1. 如果没取到,就“A01”

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧