select top 1 * from idone order by id desc
ก็จะได้ row ล่าสุดมา
แล้วเอาเข้า last_id
last_id= สมมุติเป็น C9999
last_int=mid(last_id,2,4) 'ตัวเลข
last_head=mid(last_id,1,1) ' ตัวหนังสือ
new_id=""
if cint(last_int)=9999 then
last_head = ทำยังไงไม่รู้ให้ C กลายเป็น D
new_id= last_head + "0001"
else
new_id=last_head + ("xxxx"+1)
end if
Private Function AddNumber(_No As String) As String
Dim _Head, _Digit As String
Dim _Ch As String
_Ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
_Head = Mid(_No, 1, 1)
_Digit = Mid(_No, 2)
If CInt(_Digit) >= 9999 Then
_Digit = 1
_Head = Mid(_Ch, InStr(_Ch, _Head) + 1, 1)
If _Head.Trim = "" Then _Head = "A"
Else
_Digit = CInt(_Digit) + 1
End If
_Digit = CInt(_Digit).ToString("0000")
Return _Head + _Digit
End Function
Function GetID(strID As String) As String
Dim myMatch As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Matches(strID, "([A-Z]{1,})(\d{1,})")(0)
Dim chr As String
If Convert.ToInt32(myMatch.Groups(2).Value) + 1 >= 10000 Then
chr = Convert.ToChar(Convert.ToByte(CChar("A")) + 1) 'มากกว่า 9999 เปลี่ยนตัวอักษร
ElseIf String.IsNullOrEmpty(strID) Then
chr = "A" 'เป็นค่าว่าง ให้เป็น A
Else
chr = myMatch.Groups(1).Value 'ปกติให้เป็นค่าเดิม
End If
Return chr _
&
CInt(IIf(Convert.ToInt32(myMatch.Groups(2).Value) + 1 >= 10000, 1, Convert.ToInt32(myMatch.Groups(2).Value) + 1)).ToString("0000")
'มากกว่า 9999 ให้เป็น 1 ถ้าปกติให้ +1 จัดรูปแบบโดย ToString("0000")
End Function