Сначала включите Option Strict.
Public Function GenNewCode()
Функции имеют тип возврата.
Dim code As String = "50VI" & String.Concat(txtFName.Text.Trim, txtMName.Text.Trim, txtLName.Text.Trim).ToUpper().Substring(0, 3)
Проверьте скобки..ToUpper и .Substring действуют на объединенную строку;не каждая строка в отдельности, поэтому вы получаете первые три символа в имени.
txtNewCode.Text = code & CNT.PadLeft(2, "0")
Вы начинаете свою последовательность с 001, поэтому, если ваш запрос возвращает количество 3. Это будет 001, 002, 003. Вам нужно увеличить счетчик, чтобы получить новое значение.Кроме того, .PadLeft будет работать только до 9. Проверьте длину увеличенного значения, затем добавьте соответственно.
Return code
Вы не изменили значение кода, так как ваш исходный код DIM, так что вы не получитезначение, которое вы ожидаете.Установка кода & ... в текстовое поле не меняет значение кода.
Public Function GenNewCode() As String
Dim FName As String = "Mary"
Dim MName As String = "ruth"
Dim LName As String = "Smith"
Dim FInitial As String = FName.Substring(0, 1).ToUpper
Dim MInitial As String = MName.Substring(0, 1).ToUpper
Dim LInitial As String = LName.Substring(0, 1).ToUpper
Dim code As String = "50VI" & FInitial & MInitial & LInitial
Dim exec As New ExecuteQuery
Dim CNT As Integer = CInt(exec.ExecuteScalar("SELECT COUNT(*) FROM ADMDOCTMST WHERE DOCTCODE LIKE '" & code & "%'"))
CNT += 1
Dim cntStr As String = CStr(CNT)
Dim Padding As Integer = 3 - cntStr.Length 'You want a total length of 3 so subtract existing length from 3
code &= cntStr.PadLeft(Padding, CChar("0"))
Return code
End Function