José, puedes hacerlo de muchas formas. Habría que saber la estructura de tus tablas. Por ejemplo, tengo la tabla Facturas a la que le he añadido un campo NumFin
Este campo va a coger, en este caso, el valor de las dos últimas cifras de Nfactura( podrían ser las tres, cuatro, etc).
Y tengo un formulario, que cuando lo abro le asigna valor al campo Numfin
Ahora voy a elegir una serie( el cuadro de texto a la derecha de Elija una serie se llama Faltan
Selecciono la BB y entonces me deja el formulario como
En Faltan me pone que no están la BB00002, etc.
En este caso en particular, ya te digo que habría que saber la estructura de tu tabla, el código del evento Al cargar del formulario es
Private Sub Form_Load()
DoCmd.RunSQL "update facturas set Numfin=val(right([nfactura],2))"
Me.Refresh
End Sub
Y el código del evento Después de actualizar del combinado ElegirSerie es
Private Sub ElegirSerie_AfterUpdate()
Me.RecordSource = "select * from facturas where left([nfactura],2)='" & Me.ElegirSerie & "'"
Dim i As Integer, d As Byte, c As Byte
DoCmd.GoToRecord , , acFirst
For i = 1 To Me.Recordset.RecordCount
d = NumFin - (Nz(DMax("NumFin", "Facturas", "NumFin<" & Me.NumFin & " and left([nfactura],2)='" & Me.ElegirSerie & "'")) + 1)
If d = 1 Then
Faltan = Nz([Faltan], "") & "," & Left([NFactura], 2) & "" & Mid([NFactura], 3, 1) & "" & Format((Nz(DMax("NumFin", "Facturas", "NumFin<" & Me.NumFin & "and left([nfactura],2)='" & Me.ElegirSerie & "'")) + 1), "0000")
ElseIf d > 1 Then
For c = 1 To d
Faltan = Nz([Faltan], "") & "," & Left([NFactura], 2) & "" & Mid([NFactura], 3, 1) & "" & Format((Nz(DMax("NumFin", "Facturas", "NumFin<" & Me.NumFin & "and left([nfactura],2)='" & Me.ElegirSerie & "'")) + c), "0000")
Next c
End If
DoCmd.GoToRecord , , acNext
Next
Faltan = Mid([Faltan], 2, Len([Faltan]) - 1)
End Sub