Function gfCalculaUltId(ByVal vfTablaNombre As String, ByVal vfCampoId As String, ByVal vfLongCampo As Integer)
Dim lrs As New ADODB.Recordset
Dim lsId As String
If lrs.State = adStateOpen Then lrs.Close
Sql = "Select max(" & vfCampoId & ") from " & vfTablaNombre
lrs.Open Sql, gConn, adOpenKeyset, adLockReadOnly
If lrs.RecordCount >= 0 And Not IsNull(lrs.Fields(0).Value) Then
lsId = lrs.Fields(0).Value
Else
lsId = gfIncrementa("0", vfLongCampo)
End If
lrs.Close
gfCalculaUltId = lsId
End Function
Function gfIncrementa(ByVal vfValor As String, ByVal vfLongitud As Integer)
ValorN = CLng(vfValor)
ValorS = Trim(CStr(ValorN + 1))
Cero = ""
For i = 1 To vfLongitud - Len(ValorS)
Cero = Cero + "0"
Next
Valor = Cero & ValorS
gfIncrementa = Valor
End Function
'Para obtener el siguiente codigo de la tabla concepto,
'tengo que enviar el nombre de la tabla, el nombre del campo y
'la longitud del campo
NuevoId=gfIncrementa(gfCalculaUltId("Concepto", "ConId", 8), 8)
'NuevoId sera del tipo 00047