Crear Consecutivo por código o por SQL de Access y VB

Mi pregunta es la siguiente
Quiero acceder a un registro anterior en la base de datos por medio de código de access y así generar un consecutivo
el registro anterior tiene numero como el siguiente 118010000001 del cual no siempre se genera igual,, solo los últimos
3 dígitos cambian a un consecutivo ya que siempre se estructura diferente.
Según tu ayuda anterior ya supe como crear el consecutivo con estructura y todo pero al abrir y cerrar la base de datos
este regresa a a contar desde el principio
ese código me quedo de esta manera :
Option Compare Database
Dim ConsecutivoFibras As Integer
Private Sub Comando28_Click()
CdgFibras.SetFocus
ConsecutivoFibras = ConsecutivoFibras + 1
CdgFibras.Text = codigo_gnro & Codigo_Sub_Gnro & Codigo_depart & Format(ConsecutivoFibras, "00000#")
End Sub
O otra opción seria que el valor se quedara guardado según el ultimo consecutivo que guarde pero no se como hacerlo
y si se puede también como regresarlo a cero o a un valor anterior
La verdad no se que hacer,, se me hace más fácil dejar guardado el valor del consecutivo anterior y que siga contando al abrir
la base de datos,, QUE HACER UNA CONSULTA Y ACCEDER AL REGISTRO ANTERIOR Y SACAR SU CONSECUTIVO ( aunque esta me parece mejor opción)
Espero haber sido claro en la respuesta

1 Respuesta

Respuesta
1
Disculpa por el retraso en la respuesta, he estado algo ocupado y como vi que ibas por buen camino, decidí ver hasta dónde llegabas.
Pues bien, combinando lo que tú has investigado con un poco de SQL resultaría lo siguiente para obtener el valor máximo ingresado en "CapturaCodigos" [creo que así se llama la tabla que nos interesa], y como desconozco los nombres de tus controles tendrás que adaptarlo a tu base de datos.
Private Sub Comando0_Click()
    Dim BD As Database
    Dim Rst As Recordset
    Set BD = CurrentDb
    Set Rst = BD.OpenRecordset("SELECT MAX(CdgFibrasConsec) FROM CapturaCodigos")
    If Rst.RecordCount <> 0 Then
        MsgBox "El código máximo es: " & Rst(0).Value
    End If
End Sub
El cogido que te proporciono obtiene el valor máximo del campo "CdgFibrasConsec" en la tabla "CapturaCodigos" al presionar el botón "Comando0 " y enseguida envía un mensaje con el resultado. Por lo que veo sólo necesitas sumarle 1 valor más para el siguiente registro y escribirlo en algún TextBox.
Espero que con esto hayas solucionado tu situación. Si te surge alguna duda puedes consultarme de nuevo con toda confianza.
Saludos desde México. Juan Pablo E.P.
He buscado opciones alternativas para acceder a un campo anterior de la tabla, y me he encontrado con esta función
sirve para ir a un campo anterior donde guardo una numeración
esto va en un origen de control de un cuadro de texto independiente,
y quiero usar el valor anterior para crear el valor nuevo en un registro nuevo,,
la función realiza correctamente la búsqueda del registro anterior pero al momento de
generar una nueva búsqueda, osea que donde esta el campo "cdgfibrasconsec" cuando este queda en blanco por nueva búsqueda, pues ya no encuentra el valor anterior no se porque pasa esto, la lógica la hace bien hasta llegar a un campo nuevo
he intentado usar la función para generar el nuevo campo y guardarlo en la tabla por medio de la siguiente función """CdgFibrasConsec
=atras (""atras es el nombre de la funcion para ir un registro atraz"")  +1 para que genere el numero actual del registro y luego ya poder hacer el codigo
ESTA FUNCION FUNCIONA CORRECTAMENTE HASTA LLEGAR A UN REGISTRO NUEVO
PORFAVOR QUISIERA SABER PORQUE,, O ALGUN METODO ALTERNATIVO PARA SABER EL COMO LLEGAR A UN REGISTRO ANTERIOR DE LA BASE DE DATOS, CUANDO CREE UN REGISTRO NUEVO, NO IMPORTA KE ESTE ESTE LIGADO A LA BD, SOLO LO KIERO PARA SUMARLE 1 Y ASI GEENERAR EL CONSECUTIVO
la funcion atras es esta:
=DBúsq("[CdgFibrasConsec]","CapturaCodigos","[CdgFibrasConsec]=Forms![Fibras]![CdgFibrasConsec]-1")
He Investigado Un Poco Más Y Me He Dado Cuenta De Que Puedo Hacer Consultas De Sql En Access Por Medio De Código De Visual Basic Vba
He Generado Este Código Con El Fin De Acceder Al Registro Anterior Y Sumarle 1 Al Registro Nuevo Para Generar El Continuo, Este Es El Código Que Cree
Pero Al Parecer No Funciona, Espero Me Puedas Orientar Un Poco En Este Aspecto
Dim MyBD As Database
Dim MyRS As Recordset
Dim MyFecha As Date
Set MyBD = CurrentDb
Dim anterior As String
anterior = DLookup("[CdgFibrasConsec]", "CapturaCodigos", "[CdgFibrasConsec]=Forms![Fibras]![CdgFibrasConsec]-1")
DoCmd. RunSQL ("insert into CdgFibrasConsec values,(anterior+1) from capturacodigos")
Gracias de antemano por tu respuesta,
eres un crack de esto, je je la verdad no soy muy bueno
tengo los fundamentos básicos de sql y algo de programación.
Tu respuesta me ha salvado la vida, GRACIAS
EXCELENTE RESPUESTA Juan Pablo E.P.
Saludos.
Huitzizihuitl Garcia Vitela

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas