Contador en access dependiendo 2 criterios

Estoy en la reforma de una base de datos y me han solicitado un modulo para la creación de ordenes de compra para varios proveedores. Estas ordenes deben ir enumeradas comenzando desde 1 para cada proveedor y subiendo en +1 para cada nueva orden.

Tengo algo parecido a esto pero con un solo criterio (Numero de OC), pero no se como adaptar el código para que determine cual es la ultima OC dependiendo el proveedor.

Option Compare Database

Dim str, strForm As String

Dim dbs As Database

Dim rst As Recordset

Dim Ultima  As Long

Private Sub Contador_Click()

Set dbs = CurrentDb

str = "SELECT IdOC, OC"

str = str & " FROM OCAdicionales"

str = str & " ORDER BY OCAdicionales.OC"

Set rst = dbs.OpenRecordset(str)

If rst.EOF Then

    Ultima = 0

Else

    rst.MoveLast

    Ultima = rst!OC

End If

rst.AddNew

    rst!OC = Ultima + 1

rst.Update

rst.MoveLast

End Sub

Respuesta
2

Una forma de hacerlo, que ni es la mejor ni la única.

Me.OC = Nz(DCount("OC","OCAdicionales","IdProveedor = " & Me.CboProveedor.Column(0)),0)+1

El significado: OCAdicionales >> Tabla donde se dan de alta los Números de las Ordenes de Compra OC, numérico.

IdProveedor >> Numero que identifica al Proveedor

CboProveedor >> Combo Box donde elegimos el Proveedor, que tiene como mínimo una columna, en la que hay el Numero del Proveedor. Ejemplo >> 25 ALGO SA >> Dos columnas en la que el 25 es el Número de Provvedor y ALGO SA el Nombre. La primera debe ser la "Dependiente" y puede estar oculta >> Ancho = 0cm.

Esa línea de código iria en el AfterUpdate, (Después de Actualizar) del Combo.

Se puede asegurar con un mensaje de >> If MsgBox(.... vbYesNo

Mis saludos >> Jacinto

Jacinto muchas gracias por tu ayuda, lo probare y te cuento.

La otra idea que se me ocurrió es con una consulta de selección, filtrarla por el IdProveedor con un criterio de la ultima OC, llevar el valor con un DBusq y sumarle uno.

No se si pueda funcionar.

Si quieres usar una consulta, lo puedes hacer, aproximadamente como te muestro en la figura.

Luego en el Formulario donde estés añadiendo pedidos debes buscar el SigPedido, condicionado al Proveedor (o Cliente). Sigo viendo más simple la solución que te apunté. Mis saludos >> Jacinto

Jacinto muchas gracias por tu ayuda, al final lo solucione de la siguiente manera.

cree un combo box y un evento al después de actualizar le puse el siguiente código:

Me.Factura=(DMax("[OC]", "[OCAdicionales]", "[IdProveedor]=" & Forms!FSolicitudesAdicionales.IdProveedor)) + 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas