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