Caso I
Dim a As Integer = 11
Dim cod As String = "0000".Substring(0, 4 - a.ToString.Length) & a
MsgBox(cod)
Caso II
dim da as sqldataadapter
dim con as sqlconnection
dim dtb as data.datatable
function generacodigo() as string
da = new sqldataadapter("select count(*)+1 as [num] from factura",con)
dtb = new data.datatable
da.fill(dtb)
dim num as integer = dtb.rows(0)("num").tostring
dim cod as string = "0000".substring(0, 4 - num.tostring.length) & num
return cod
end function
SUb Form_Load (...)
msgbox generacodigo
end sub
Caso III
dim da as sqldataadapter
dim con as sqlconnection
dim dtb as data.datatable
function generacodigo() as string
da = new sqldataadapter("select * from factura",con)
dtb = new data.datatable
da.fill(dtb)
dim num as integer = dtb.rows.count + 1
dim cod as string = "0000".substring(0, 4 - num.tostring.length) & num
return cod
end function
SUb Form_Load (...)
msgbox generacodigo
end sub
PD: Recordar que el 4 de color rojo, representa el tamaño del codigo, en este caso el codigo es de 4 digitos, si fuese mayor o menor se debera cambiar ese valor.
PD: Recordar que puedes poner digitos alfanumericos, podria ser FA0001, y si ese fuese el caso el valor que se indica de color
Rojo, tendria que ser del tamaño de tu cadena.
PD: Recordar tambien que la consulta puede cambiar, segun lo que desees, mientras que en el primer caso cuentas cuantos registros hay para luego filtrar unicamente el campo num(
dtb.rows(0)("num").tostring), en el segundo muestras todos para luego contarlos con el
dtb.rows.count. Particularmente prefiero usar la primera opcion.
Debido a que es un ejemplo deberas configurar tu cadena de conexion para la variable
con, la declaracion e instanciar las mismas. Tampoco olvides agregar la libreria (
imports System.Data.SqlClient).
Saludos, espero que te sirva.