Ordenes de Compras Manuls y por BD

Soy nuevo en todoexpertos y en access 2010. He creado una base donde genero ordenes de compras y las gurado en una tabla OC-OrdenCompra. En la misma tabla cargo dos tipos distintas de OC

OM Ordenes Manuales donde el numero lo ingreso manualmnte (Ej. 003325) de un talonario y otra que las genero directo del sistema OC y así las tengo difereciadas en el campo OCTipo como OC y OM

. Ahora bien, mi problema es que no he encontrado la forma de generar automáticamente el numero de la OC (del sistema) en forma correlativa y no repetida. Para complica aun más, ya tetengo unas cuantas de cada una, la que dedo seguir correlativa termina en 400817.-

Si me explico, ¿me pueden dar una mano como resolver esto?.

1 respuesta

Respuesta
2

No dices si el campo OC es numérico o texto.

1º Vamos a suponer que es numérico. En el formulario donde metas los datos. en el evento Al activar registro puedes crear un procedimiento de evento y entre Private Sub y End Sub poner

if isnull([oc]) then

oc=(dmax("oc","oc_ordencompra"))+1

end if

2º Vamos a suponer que es texto, puedes hacerlo miso pero poniendo

if isnull([oc]) then

OC=(val(dmax("oc","oc_ordencompra")))+1

end if

Comprueba, en vista diseño del formulario, en el cuadro de texto OC, en sus propiedades-otras-Nombre que realmente se llama así.

Fantástico Icue, mil gracias por la pronta respuesta funciono de 10.-

Hola, buenas tardes, he trabajado hasta ahora con la solución de Icue de forma fantástica pero ahora necesito que en el mismo campo "OCNum" de la tabla "oc_ordendecompra " donde tengo ya dos series, una que introduzco manualmente con el formato "1000000" y la otra que se genera con la solución de Icue con el formato "4000000", junto a esas dos series necesito introducir una tercera, digamos "7000000" también correlativa he irrepetible.-

Me dan un amano de como resolver esto por favor?

Mil gracias

Pues es lo mismo

Si tengo la tabla

Y el formulario, en el que le digo, en el evento Al activar el registro

Private Sub Form_Current()
If Me.NewRecord Then
IdCliente = Format(Nz(DLast("idcliente", "usar", "left([idcliente],1)=7"), "7000000")) + 1
End If
End Sub

Cuando el cursor se vaya a un nuevo registro

¡mil Gracias! lo intento mañana y te digo como me fue

Buen día, prove la alternativa que me ofreciste y si bien funciona correctamente el problema es que ahora todos los "OCNum" son del rango "7000000".-

Tengo esto:

Private Sub Form_Current()

If IsNull([OCNum]) Then
OCNum = (Val(DMax("OCNum", "OC-OrdenCompra"))) + 1
End If

End Sub

Private Sub Form_Current()
If Me.NewRecord Then
OCNum = Format(Nz(DLast("OCNum", "OC-OrdenCompra", "left([OCNum],1)=7"), "7000000")) + 1
End If
End Sub

Mi necesidad es que dependiendo del formulario que ejecute se genere el correlativo de la seria "4000000" o el de la serie "7000000"

Desde ya mil gracias por tu colaboración.-

No lo entiendo. Si son dos formularios distintos, podrías poner en uno

If me.newrecord then

OCNum = Format(Nz(DLast("OCNum", "OC-OrdenCompra", "left([OCNum],1)=7"), "7000000")) + 1

end if

Y en el otro lo mismo pero cambiando lo de 7000000 por 4000000

Incluso, aunque no le veo sentido,

If me.name="copia de clientes" and me.newrecord then

OcNum.....

end if

Pero como por otra lado dices que en la misma tabla guardas las dos ordenes de compra, podrías usar en el formulario, suponiendo que haya un control llamado OrdenCompra, en sus propiedades-eventos-Después de actualizar

If Odrencompra="Contado" then

OCNum...............7000000

else

Ocnum=...........4000000....

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas