MS Access 2003: Cree números de serie que se puedan controlar usando formatos como AGR-0001

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MS Access 2003: Cree números de serie que se puedan controlar usando formatos como AGR-0001

Este tutorial de MSAccess muestra cómo crear números de serie para su control utilizando formatos como AGR-0001 en Access 2003 (con capturas de pantalla e instrucciones paso a paso).

P: Tengo una base de datos en Access 2003/XP/2000/97. Usando el código VBA, quiero generar códigos asignados por el sistema (autonumeración) para artículos específicos que pertenecen a diferentes tipos de productos básicos en este formato:

AGR-0001
AGR-0002
SU-0001
etc…

donde AGR e ITS son los valores de ComID (ComID es la clave principal para la tabla de tipos de elementos) seguidos del siguiente número en la secuencia ComID dada.

Cada vez que se ingresa un artículo para un tipo de artículo, se le asigna un código de artículo en el formato: ComID + contador de artículos

Sin embargo, los contadores solo son locales para un tipo de elemento específico. Como se muestra en los datos de muestra anteriores, un nuevo contador para otro tipo de elemento…

R: Hemos creado una base de datos de Access de muestra que puede descargar y que demuestra cómo crear números de serie que se pueden controlar con el formato anterior.

Descargar versión en Access 2000

Veamos este ejemplo. A continuación, tenemos un formulario que permite al usuario ingresar registros. El usuario ingresará el tipo de artículo y el formulario asignará automáticamente un número de secuencia al campo de código de artículo.

El usuario puede controlar la asignación del siguiente número a través de la tabla de códigos.En esta tabla, hay un registro AGR (esto es material agrícola) y una entrada su (Esto es suministros de TI).

Si la tabla de códigos no contiene una entrada para el tipo de elemento seleccionado en el cuadro combinado, creará una entrada en la tabla de códigos para el nuevo tipo de elemento y asignará el campo Last_Nbr_Assigned a 1.

Luego, en el Módulo 1 de la base de datos de Access, hay una función llamada nuevo código de proyecto Devuelve el siguiente número en la secuencia y los incrementos Last_Nbr_Assigned El campo consta de 1.

Function NewItemCode(pComID) As String

   Dim db As Database
   Dim LSQL As String
   Dim LUpdate As String
   Dim LInsert As String
   Dim Lrs As DAO.Recordset
   Dim LNewItemCode As String

   On Error GoTo Err_Execute

   Set db = CurrentDb()

   'Retrieve last number assigned for Commodity Type
   LSQL = "Select Last_Nbr_Assigned from Codes"
   LSQL = LSQL & " where Code_Desc="" & pComID & """

   Set Lrs = db.OpenRecordset(LSQL)

   'If no records were found, create a new Commodity Type in the Codes table
   'and set initial value to 1
   If Lrs.EOF = True Then

      LInsert = "Insert into Codes (Code_Desc, Last_Nbr_Assigned)"
      LInsert = LInsert & " values "
      LInsert = LInsert & "('" & pComID & "', 1)"

      db.Execute LInsert, dbFailOnError

      'New Item Code is formatted as "AGR-0001", for example
      LNewItemCode = pComID & "-" & Format(1, "0000")

   Else
      'Determine new ItemCode
      'New ItemCode is formatted as "AGR-0001", for example
      LNewItemCode = pComID & "-" & Format(Lrs("Last_Nbr_Assigned") + 1, "0000")

      'Increment counter in Codes table by 1
      LUpdate = "Update Codes"
      LUpdate = LUpdate & " set Last_Nbr_Assigned = " & Lrs("Last_Nbr_Assigned") + 1
      LUpdate = LUpdate & " where Code_Desc="" & pComID & """

      db.Execute LUpdate, dbFailOnError

   End If

   Lrs.Close
   Set Lrs = Nothing
   Set db = Nothing

   NewItemCode = LNewItemCode

   Exit Function

Err_Execute:
   'An error occurred, return blank string
   NewItemCode = ""
   MsgBox "An error occurred while trying to determine the next ItemCode to assign."

End Function

Si después de probar este ejemplo obtiene un error “indefinido” en la declaración “Dim db as Database”, debe seguir algunas instrucciones adicionales.