Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/07/2011, 00:00
CHOSS
 
Fecha de Ingreso: abril-2010
Mensajes: 66
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Correlativo en VB .net

Tu Campo de Codigo siempre va a ser de la forma Letra numero de tres digitos¿?????

Y la letra es en orden alfabetico?? o depentera de algo??. . .

Si todo es en orden. . . Osea despues algo asi
A998
A999
B001
B002. . . .

Se me ocurre que puedes hacer esto para mysql. .

Cita:
'Si se ingresa la Consulta da como resultado A002
Dim ResConsulta As String
Dim Numero As String
Dim Letra As String
Dim NuevoId As String
Cmd = New MySQLCommand("Select MAX(IdCampo) FROM Tabla", Conexion)
ResConsulta = Cmd.ExecuteScalar'Este guarda el ultimo Id ingresado a la tabla 'A002'
'Se separa la letra y el numero
Letra = Mid(ResConsulta, 1, 1) 'Se guarda 'A'
Numero = Val(Mid(ResConsulta, 2, Len(ResConsulta))) 'Se guarda '002' -> '2'
If Numero = 999 Then'Se llega al limite es decir continua la siguiente letra y el primer numero
Numero = 1
NuevoId = SiguienteLetra(Letra) & NumeroConCeros(Numero)
Else
Numero += 1 'SE cambia a '3'
NuevoId = Letra & NumeroConCeros(Numero)'Se conserva la letra y se forma 'A003'
End If
MsgBox(NuevoId)''Aki ya tienes el nuevo ID 'A003'

'Funciones. . . para conseguir el Numero con los CEros y la Siguiente letra

Private Function NumeroConCeros(ByVal vNumero As Integer) As String
Select Case vNumero
Case Is < 10
Return "00" & vNumero
Case Is < 100
Return "0" & vNumero
Case Else
Return vNumero
End Select
End Function

Private Function SiguienteLetra(ByVal vLetra As Char) As Char
Return Chr(Asc(vLetra) + 1)
End Function

Bueno esta solucion encontre espero que te funcione nose si sea la mejor pero almenos esa se me ocurrio jeje

Saludos. . .