Necesito información sobre una instrucción en consulta a la base de datos en Microsoft Access

Hola soy nuevo en access y me he encontrado en la necesidad de arreglar una base de datos que tiene la siguiente instruccion en un campo de una consulta de selección Salto: SiInm(DifFecha("d";CFecha(Der$([SAG_JALONES]![F_ULT_EST];2) & " / " & Medio$([SAG_JALONES]![F_ULT_EST];5;2) & " / " & Medio$([SAG_JALONES]![F_ULT_EST];3;2));Ahora()) Entre 0 Y -30;"OJO";"").
¿Me podrías ir indicando paso a paso que es lo que significa todo? Hay algunos caracteres que no se que significan como &, $, !...
Gracias por anticipodo. Un saludo
1

1 respuesta

Respuesta
1
Por pasos:
1- SiInm:
Devuelve uno de entre dos valores, dependiendo de la evaluación de una expresión. Siempre evalúa truepart y falsepart, aunque sólo vaya a devolver una de ellas. Por esta razón, deberá vigilar que no se produzcan efectos no deseados. Por ejemplo, si al evaluar falsepart se produce un error de división por cero, se generará un error aunque expr sea True.
Sintaxis: IIf(expr, truepart, falsepart)
Donde:
Expr: Requerido. Expresión que se desea evaluar.
Truepart: Requerido. Valor o expresión devuelta si expr es True.
Falsepart: Requerido. Valor o expresión devuelta si expr es False.
En este caso:
"expr" = DifFecha("d";CFecha(Der$([SAG_JALONES]![F_ULT_EST];2) & " / " & Medio$([SAG_JALONES]![F_ULT_EST];5;2) & " / " & Medio$([SAG_JALONES]![F_ULT_EST];3;2));Ahora()) Entre 0 Y -30
"truepart" = "OJO"
"falsepart" = ""
2- Der$
Devuelve un tipo Variant (String) que contiene un número especificado de caracteres del lado derecho de una cadena.
Sintaxis: Right(string, lenght)
Donde:
String: Requerido. Expresión de cadena desde la cual se devuelven los caracteres que están más a la derecha. Si string contiene Null, se devuelve Null.
Length: Requerido, un tipo Variant (Long). Expresión numérica que indica cuántos caracteres se van a devolver. Si es 0, se devuelve una cadena de longitud cero (""). Si es mayor o igual al número de caracteres en string, se devuelve la cadena completa.
en este caso: Der$([SAG_JALONES]![F_ULT_EST];2) devuelve los 2 caracteres de la derecha del campo "F_ULT_EST"
3- Medio$
Devuelve un tipo Variant (String) que contiene un número especificado de caracteres de una cadena.
Sintaxis: Mid(string, start[, length])
donde:
string: Requerido. Expresión de cadena de la cual se devuelven los caracteres. Si string contiene Null, se devuelve Null.
start: Requerido; un tipo Long. Posición de carácter en string en la cual comienza la parte que se quiere tomar. Si start es mayor que el número de caracteres en la string, Mid devuelve una cadena de longitud cero ("").
Length: Requerido; un tipo Variant (Long). Número de caracteres que se van a devolver. Si se omite o en el texto hay menos de length caracteres (incluyendo el carácter de start), se devuelven todos los caracteres desde la posición de start hasta el final de la cadena.
En este caso:
Medio$([SAG_JALONES]![F_ULT_EST];5;2) devuelve los proximos 2 caracteres de f_ult_est a partir del caractyer 5.
4- CFecha$
convierte a fecha cualquier expresión con formato similar a fecha
sintasis: CFecha(expr)
en este caso convierte a fecha el resultado de esta expresion: CFecha(Der$([SAG_JALONES]![F_ULT_EST];2) & " / " & Medio$([SAG_JALONES]![F_ULT_EST];5;2) & " / " & Medio$([SAG_JALONES]![F_ULT_EST];3;2))
Los & concatenan las cadenas que se van devolviendo al sigo / por tanto va quedando "derecha/medio1/medio2"
5- DifFecha
Devuelve un valor de tipo Variant (Long) que especifica el número de intervalos de tiempo entre dos fechas determinadas.
Sintaxis: DateDiff(intervalo, fecha1, fecha2[, primerdíasemana[, primerasemanaaño]])
En este caso devuelve la diferencia entre el resultado de CFecha y Ahora()
En fin, se tomaron distintos valores de un campo para armar una fecha y determinar la diferencia con la fecha actual. Se evalúa con SiInm si esta diferencia obtenida con la fecha actual esta en el rango "Entre 0 Y -30". Si esto es verdadero se imprime "OJO" de lo contrario no imprime nada.
Los & concatenan dos cadenas, $ significa que la función devolverá un valor tipo variant y / es solo un símbolo para establecer en el formato de fecha: 00/00/00
alabao, buen trabajito me diste. Uhf. Me agote jajajaja.
Suerte con eso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas