Quiero generar un código para los artículos que se compone de 3 grupos
de números:
99 - Código del grupo o familia
999 - Código del proveedor
999 - Contador

Se trata de que seleccionando un grupo y un proveedor, al dar de alta
a un artículo, te asigne el número que le corresponda... pero, claro,
éste será distinto en cuanto se varíe o bien el grupo o bien el
proveedor. Por ejemplo:
23-002-001 el el primer artículo del grupo 23 y el proveedor 002.
si meto otro artículo en este mismo, debería darle el número 002 en el
contador.
pero, si cambio el grupo, por ejemplo al 24 y es el primero que
introduzco, el código debería ser 24-002-001.

¿Hay forma de hacer este contador de manera que distinga este
problema?


RESPONDE CARCAR
===============

Esta función hace exactamente lo que tu quieres.

Function ObtenerNumero(P1 As Integer, P2 As Integer) As String
    Dim Rs As Recordset
    Dim Sql As String
    Dim Valor As String
    Dim Numero As Integer
    
    Valor = Format(P1, "00") & "-" & Format(P2, "000") & "-"
    Sql = "SELECT TOP 1 Codigo FROM Tabla3 WHERE Codigo LIKE '"
    Sql = Sql & Valor & "*' ORDER BY Codigo DESC"
    
    Set Rs = CurrentDb.OpenRecordset(Sql, dbOpenSnapshot)
    If Rs.RecordCount > 0 Then
        Numero = Right(Rs!Codigo, 3) + 1
        ObtenerNumero = Valor & Format(Numero, "000")
      Else
        ObtenerNumero = Valor & "001"
    End If
    Rs.Close
        
End Function

Tal cual está, recibe los valores de código de grupo y código de
proveedor en "enteros", pero no hay problema si los pasas como tipo
texto, siempre que hayas tenido la precaución de que tengan la
longitud adecuada, bueno en ese caso sobrarían los Format en la
instrucción que guarda "Valor" que quedaría así:

  Valor = P1 & "-" & P2 & "-"

    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)