Access - Campo automatico que se reinicia al cambiar de año

 
Vista:

Campo automatico que se reinicia al cambiar de año

Publicado por Marina (37 intervenciones) el 11/06/2008 23:27:42
Hola

Por favor alguien que me puedaaaaa ayudar.

Tengo un formulario, con un campo Nº Pedido, quiero que al ponerle la fecha de pedido te vaya asignando un numero correlativo en el nº de pedido 1/2008 2/2008 .....etc si la fecha de pedido fuera del 2007 empezara desde 1, 1/2007, siempre /año dependiendo del año de la fecha de pedido siguiera el contador......como la base está sin actualizar y tenemos que meter todos los datos desde el 2007, según fuese la fecha de pedido te vaya asignando el numero de pedido 1/año y ya que no podemos empezar por el principio sino ahora empezaremos a meter del 2008 y poco a poco ir actualizando los del 2007 por eso lo del contador.

He conseguido el contador individual, con la formula Dmax pero no se como hacer para que reinicie y se ponga a 1 y continue al cambiar de año.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Campo automatico que se reinicia al cambiar de

Publicado por pacopaz (50 intervenciones) el 11/06/2008 23:50:02
Lo que tienes que hacer es un query al máximo por año y al resultado incrementarle 1.
El query es así:

select
max(NoPedido)
from
Pedidos
where
Year(FechaPedido) = Year([FechaNuevoPedido])
group by
Year(FechaPedido)

donde
estoy suponiendo que el campo que almacena la Fecha del Pedido se llama FechaPedido y es de tipo DateTime.
[FechaNuevoPedido] es la fecha con la que pretendes ingresar el nuevo pedido y que también tiene que ser de tipo Date.

Esto lo pones en un String, abres un recordset con ese String y al resultado le agregas uno y lo tienes.

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo automatico que se reinicia al cambiar de

Publicado por Marina (37 intervenciones) el 12/06/2008 00:38:05
Gracias por contestar tan rapido

Pero no entiendo como hacerlo, solo tengo un campo fecha y es el que al actualizar en el procedimiento evento Despues de actualizar que me cre el campo Numero pedido. Si por ejemplo la fecha de pedido que meto 01/06/2007 el numero de pedido tendria que ser 1/2007.......30/2007 si en el siguiente meto una fecha del 2008 por ejemplo 01/06/2008 el campo numero pedido se tendria que reiniciar a 1/2008 y si metiese otra fecha del 2007 continuaria con el 31/2007 etc.

No tengo ni idea de codigo, y no se como hacerlo, he conseguido que vaya actualizando pero no tiene encuenta el campo Fecha pedido y el reinicio.

If [Numped] = 0 Then

[Numped] = DMax("[Numped]", "Pedidos") + 1

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo automatico que se reinicia al cambiar de

Publicado por pacopaz (50 intervenciones) el 12/06/2008 00:56:27
si me pudieras ofrecer los nombres de los campos de la tabla que usas, su tipo de datos y el código completo del procedimiento (no de todo el módulo) donde estás usando el DMax, puedo ofrecerte una respuesta más específica, para que lo intentes directo.
Ojalá que pudiera ser en los próximos 5 minutos, por que estpy por irme de la oficina.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo automatico que se reinicia al cambiar de

Publicado por Marina (37 intervenciones) el 12/06/2008 01:05:08
Gracias

Esto lo tengo al introducir la Fecha en el Campo Fecha Pedido, de la tabla Pedidos despues de actualizar, en el campo Numexp se vaya actualizando, y hasta ahi bien, pero no se como hacer lo del reinicio dependiendo del año. el campo Numexp lo he puesto en Texto para poder poner numero/Año

Private Sub Fecha_Pedido_AfterUpdate()


If [Numexp] = 0 Then

[Numexp] = DMax("[Numexp]", "Pedidos") + 1

End If


Call actualizar
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo automatico que se reinicia al cambiar de

Publicado por mi menda (1111 intervenciones) el 12/06/2008 06:17:21
Hola Marina:
Te creas un campo para el número de pedido (Entero Largo) y otro para el expediente (Texto).
En el evento después de actualizar del campo FechaPedido:

Private Sub FechaPedido_AfterUpdate()
Dim anyoPedido As Integer

If Me.NewRecord Then
anyoPedido = Year(FechaPedido)
NumeroPedido = Nz(DMax("NumeroPedido", "tblPedidos", _
"Year(FechaPedido)= " & anyoPedido)) + 1
Expediente = NumeroPedido & "/" & anyoPedido
End If
End Sub

Solo tienes que cambiar los nombres de los campos NumeroPedido, FechaPedido y Expediente ; y la tabla tblPedidos por los que tu tengas, teniendo en cuenta que si contienen espacios en blanco los tienes que meter entre corchetes [Fecha Pedido].

Un Saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo automatico que se reinicia al cambiar de

Publicado por Marina (37 intervenciones) el 12/06/2008 17:18:30
Muchas Gracias

Funciona perfectamenteeeee, es justo lo que necesitabaaaaaaaaaa. Solo un pequeño problema que si no es muy dificil de hacer, la base esta compartida y estarían dos usuarios a la vez metiendo datos, he probrado si por casualidad se diese la fecha de pedido a la vez, le daría el mismo numero a los dos, existe alguna manera de hacer que compruebe, antes de darle el mismo numero a los dos.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo automatico que se reinicia al cambiar de

Publicado por mi menda (1111 intervenciones) el 12/06/2008 17:50:06
Hola Marina:
Pues no tengo ni idea, pues no he trabajado nunca en red, puedes probar ha hacer un refresh antes de insertar el registro, es decir, en vez de poner el código en el evento después de actualizar del campo FechaPedido, ponerlo en un botón Guardar y antes del If Me.NewRecord Then actualizar la tabla con:

Me.Refresh
Ó
Me.Requery

Prueba con que opción funciona (sí es que funciona)
Otra posibilidad (la más sencilla) es poner como campo clave el campo Expediente, así no dejará insertar dos expedientes iguales.
Se que en red hay una opción para el bloqueo de registros, y no puedan acceder dos usuarios a la vez.
Sí pruebas con estas opciones y no te valen, pon un nuevo post con este tema, para que te ayuden los compañeros que dominan las bbdd en red.

Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Campo automatico que se reinicia al cambiar de

Publicado por Marina (37 intervenciones) el 12/06/2008 19:28:48
Hola

Lo probaré mañana que la tengo en el trabajo, el problema es que no puedo al insertar registro, porque son registros que ya estan creados, solo que estan en el [Estado]= pendientes, por eso lo tengo que hacer al actualizar el campo Fecha Pedido, probaré lo de campo clave, lo del bloqueo de registros ya lo he probado esta mañana pero no funciona.

Gracias, lo que me hacia falta era el contador, y eso ya está resuelto esto es ya rizar el rizo, asi que si puedo hacerlo mejor y sino que se pongan de acuerdo y no metan los datos a la vez, del mismo año.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar