如何在vb.net中添加日期、年份和字母的自动增量

如何在vb.net中添加日期、年份和字母的自动增量,.net,vb.net,.net,Vb.net,代码是这样的。但是我没有得到新号码,而是得到了2月16日INV-00011和2月16日INV-000111和2月16日INV-000111 Private Function newautonum() Dim NewValue As Integer 'Dim result As String Dim resultN As String Dim ynow As String = DateTime.Today.ToString("yy") Dim Mnow

代码是这样的。但是我没有得到新号码,而是得到了2月16日INV-00011和2月16日INV-000111和2月16日INV-000111

Private Function newautonum()

    Dim NewValue As Integer
    'Dim result As String
    Dim resultN As String

    Dim ynow As String = DateTime.Today.ToString("yy")
    Dim Mnow As String = DateTime.Today.ToString("MMM")
    Dim Bilnow As String = Mnow & "-" & ynow & "-"

    Dim qry As String = "select MAX(ID) from tblTrns"

    ConObj = New SqlConnection(ConStr)
    ConObj.Open()

    CmdObj = New SqlCommand(qry, ConObj)
    resultN = CmdObj.ExecuteScalar().ToString()

    If String.IsNullOrEmpty(resultN) Then
        resultN = Bilnow & "INV-000"
        ' resultN = result
    End If

    resultN = resultN.Substring(0)
    Int32.TryParse(resultN, NewValue)
    NewValue = NewValue + 1
    resultN = resultN + NewValue.ToString
    Return resultN

    ConObj.Close()
End Function
现在我试过了,但是没有运气。。。。从类型“DBNull”到类型“String”的转换无效。getnextvalue Error的函数

Private Function newautonum() As String

    Dim NewValue As Integer
    Dim result As String
    Dim qry As String = "Select MAX(ID) from tblTrns"

    ConObj = New SqlConnection(ConStr)
    ConObj.Open()

    CmdObj = New SqlCommand(qry, ConObj)
    result = CmdObj.ExecuteScalar().ToString()

    If String.IsNullOrEmpty(result) Then
        result = String.Format("{0}-INV-{1:000}", DateTime.Now.ToString("MMM-yy"), NewValue)
    End If

    Int32.TryParse(result, NewValue)
    NewValue = GetNextValue()
    result = result & GetNextValue.ToString
    Return result

    ConObj.Close()
End Function

你有你需要的一切,只是你没有的字符串格式

假设
NewValue
包含要为其创建字符串的下一个数字:

 Dim newValue = GetNextValue()
 resultN = $"{DateTime.Now.ToString("MMM-yy")}-INV-{newValue:000}"
注意如果使用Visual Studio 2013或更低版本,则必须使用String.Format而不是$快捷方式:

resultN = String.Format("{0}-INV-{1:000}", DateTime.Now.ToString("MMM-yy"), newValue)
我建议您使用单独的函数返回下一个值:

Private Function GetNextValue() As Integer
    Dim qry As String = "select MAX(ID) from tblTrns"

    ConObj = New SqlConnection(ConStr)
    ConObj.Open()

    CmdObj = New SqlCommand(qry, ConObj)
    Dim result = CmdObj.ExecuteScalar()

    If String.IsNullOrEmpty(result) Then
        Return 1
    Else
        Return CInt(result) + 1
    End If
End Function

谢谢,先生。但我不明白这句话。resultN=$“{DateTime.Now.ToString(“mmmyy”)}-INV-{newValue:000}”我也试过这个。但是字符$无效?您应该打开
选项Strict
也尝试过这个。但是字符$无效?使用
resultN=retval=String.Format(“{0}-INV-{1}”、DateTime.Now.ToString(“MMM-yy”)、newvalue.ToString(“000”)
发布的答案使用的是VS2010的VS2015特性。亲爱的先生,你能完成我的全部回答吗