どうですか:
txtTransID="R" & i.ToString().PadLeft(8, "0"c)
編集:
i を新しいリクエスト番号として宣言する必要があります。
サンプルコードはこちら。
Public Class oRs
Public Shared EOF As Boolean = False
Public Shared Fields As New Dictionary(Of String, Object)
End Class
Protected Overrides Sub Test()
oRs.Fields.Add("REQ_ID", "R00000001")
Dim txtTransID As String = Nothing
' Your code starts here '
If oRs.EOF Then
txtTransID = "R" & "00000001"
Else
Dim strOldRequest As String = System.Convert.ToString(oRs.Fields("REQ_ID"))
Dim iOldRequest As Integer = Int32.Parse(strOldRequest.Split("R"c)(1))
iOldRequest += 1
txtTransID = "R" & iOldRequest.ToString().PadLeft(8, "0"c)
End If
End Sub
従来の ASP で が宣言されていない場合はInt32.Parse
tryをCInt(YOUR_STRING)
、サポートしていない場合はobject.ToString
tryCStr(YOUR_Number)
を、持っていない場合はPadLeft
通常の関数として追加します。
Function Rpad (sValue, sPadchar, iLength)
Rpad = sValue & string(iLength - Len(sValue), sPadchar)
End Function
Function Lpad (sValue, sPadchar, iLength)
Lpad = string(iLength - Len(sValue),sPadchar) & sValue
End Function
補足として、古いリクエスト番号を string ではなく整数として保存してみませんか?
"R" & (iOldNr + 1).ToString().PadLeft(8, "0"c)
データとそのプレゼンテーションを分けて保管してください。
データテーブルの R0000xy でまだ必要な場合は、いつでも次のような SQL クエリを実行できます。
SELECT
'R' + RIGHT('00000000' + CAST(REQ_ID AS varchar(20)), 8) AS RequestNr
FROM T_Requests
また、別の補足として、実際にはコードは必要ありません。問題は非常に単純で、完全に SQL で実行することもできます。
SELECT
'R' + RIGHT('00000000' + CAST(ISNULL(MAX(REQ_ID), 0) + 1 AS varchar(20)), 8) AS NextRequestNr
FROM T_Requests