Access - Funcion Silnm Access con fechas

 
Vista:

Funcion Silnm Access con fechas

Publicado por Elisa (3 intervenciones) el 02/06/2020 10:55:43
Hola a todos
Llevo varios días dándole vueltas a una función que quiero aplicar en mi base de datos y no consigo dar con ella. Lo que quiero es que si la fecha en un campo es entre el 1 y el 15 de un mes, en otro campo aparezca la fecha 20/mes siguiente/mismo año y si es posterior al 15 me aparezca 5/2meses siguientes/mismo año.

La expresión que he puesto es:
Silnm(SerieFecha(Año([Fecha])-(Mes([Fecha])-(Día([Fecha])<=15));SerieFecha(Año([Fin voluntaria])=Año([Fecha]))-(Mes([Fin voluntaria])=Mes([Fecha])+1)-(Día([Fin voluntaria])=20);SerieFecha(Año([Fin voluntaria])=Año([Fecha]))-(Mes([Fin voluntaria])=Mes([Fecha])+2)-(Dia([Fin voluntaria])=5)

Me da el mensaje" la expresión contiene un número incorrecto de argumentos"

¿Alquien me puede ayudar en que estoy fallando?

Muchas 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

Funcion Silnm Access con fechas

Publicado por Anonimo (3375 intervenciones) el 02/06/2020 13:34:51
Mucho lio para algo sencillo (tras analizarlo fríamente).

Si el día es inferior a 16 (el mes y año no se tienen en cuenta):
.- se calculara una fecha en base a la referente a la que se le añade un mes, y como día el veinte (símil a añadir mes y medio a la fecha inicial)

Si el día NO es inferior a 16 (el mes y año no se tienen en cuenta):
.- se calculara una fecha en base a la referente a la que se le añade dos meses, y como día el cinco (símil a añadir mes y medio a la fecha inicial)

el comparador en el IIF :

1
Day(UnaFecha ) <16

Añadamos un mes si el día es veinte (esto es: el referente menor que 16):

1
DateSerial(Year(UnaFecha), Month(UnaFecha) + 1, 20)

Añadamos dos meses si el día es el 5 (esto es: el referente NO es menor que 16):

1
DateSerial(Year(UnaFecha), Month(UnaFecha) + 2, 5)

Todo junto …..
1
IIF ( Day(UnaFecha ) <16, DateSerial(Year(UnaFecha), Month(UnaFecha) + 1, 20), DateSerial(Year(UnaFecha), Month(UnaFecha) + 2, 5))

.- con punto y coma como separador (utilizar en consultas y configuración regional española)
1
Vencimiento: IIF ( Day(UnaFecha ) <16; DateSerial(Year(UnaFecha); Month(UnaFecha) + 1; 20); DateSerial(Year(UnaFecha); Month(UnaFecha) + 2; 5))

en la ventana de inmediato:
1
2
3
UnaFecha= Cdate("22/11/2020")
?iif(day(UnaFecha)<16,dateserial(year(UnaFecha), month(UnaFecha) +1 ,20),dateserial(year(UnaFecha), month(UnaFecha) +2 ,5))
05/01/2021
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

Funcion Silnm Access con fechas

Publicado por Elisa (3 intervenciones) el 02/06/2020 14:29:39
Muchas gracias Anónimo, solo me falta un detalle que las fechas que quiero obtener van en un campo diferente[Fin voluntaria] y no sé como introducirlo en la expresión.
Gracias de nuevo
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

Funcion Silnm Access con fechas

Publicado por Anonimo (3375 intervenciones) el 02/06/2020 17:32:06
En el primer mensaje del hilo, hay muchas expresiones que juegan con las fechas y en ellas la ¿referencia? que se utiliza es FECHA:

Silnm(SerieFecha(Año([Fecha])-(Mes([Fecha])-(Día([Fecha])<=15));SerieFecha(Año([Fin voluntaria])=Añ…..

He utilizado dos ejemplos, uno en VBA y otro simulando un campo en una consulta, utilizar esas mismas expresiones para darle valor a un campo …. es el método empleado en la consulta y 'fuera de ella' se cambian los dos puntos por el signo de igualdad:

Vencimiento: IIF ( Day(UnaFecha ) <16; DateSerial(Year(UnaFecha); Month(UnaFecha) + 1; 20); DateSerial(Year(UnaFecha); Month(UnaFecha) + 2; 5))


[Fin voluntaria]= IIF ( Day(UnaFecha ) <16; DateSerial(Year(UnaFecha); Month(UnaFecha) + 1; 20); DateSerial(Year(UnaFecha); Month(UnaFecha) + 2; 5))

Si [Fin voluntaria] es el campo con la fecha de referencia …… no veo mayor complicación en cambiar '[UnaFecha] <===> [Fin voluntaria] en cualquiera de los ejemplos y si lo que has publicado es una copia de algo que estaba en otro sitio … analiza con mas tranquilidad lo que he expuesto y aplícalo (algo tendrás que poner tu).
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

Funcion Silnm Access con fechas

Publicado por Elisa (3 intervenciones) el 02/06/2020 18:27:25
Muchas gracias, ahora ya lo tengo claro, no me importa sustituir los nombres de los campos, pero no había visto lo de vencimiento, perdón por la molestia.
La solución ha sido muy útil, ahora ya me sale, nunca había utilizado esta función.
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