Access 97, campo en el que aparezca un valor dependiendo del valor de otro campo. Función Silnm.

Tengo un campo de texto con valores numéricos en un informe; necesito crear otro campo en el que muestre un valor según el valor de dicho campo.

Ejemplo: menor o igual a 39, suspenso. Menor o igual a 49, aprobado.

He probado con la función Silnm([Nombre_del_Campo]<="39";"Suspenso") y me da el siguiente error:

Error de sintaxis en la expresión de consulta '[Silnm([Nombre_del_Campo]<="39";"Suspenso") ]'

1 respuesta

Respuesta
1

No te funciona porque te falta un argumento en la función SiInm. Esta función tiene que llevar 3 argumentos: Condición, valor si verdadero, valor si falso.

En tu caso, tendrás que anidar varias funciones.

Por ejemplo: 0-5 -> Suspenso; 5-6 -> Aprobado, 7-8 ->Notable; 9-10->Sobresaliente

SiInm([Nombre_Campo] <5;"Suspenso";SiInm([Nombre_Campo]<7;"Aprobado";SiInm([Nombre_Campo]<9;"Notable";"Sobresaliente")))

Hola de nuevo, gracias por la respuesta, pero sigue sin funcionar. La expresión literal es: SiInm(EsNulo([Lengua];"0";SiInm([Lengua]<"5";"Suspenso";SiInm([Lengua]<"7";"Aprobado";SiInm([Lengua]<"9";"Notable";"Sobresaliente")))))

Da error de sintaxis en la expresión de consulta. He añadido el valor nulo por si algún registro se encuentra vacío.

Está en un cuadro de texto en un informe; los campos de las asignaturas (lengua en este caso)son texto, por lo que la calificación la he puesto entre comillas.

No se que mas probar.

Gracias anticipadas.

Entiendo que tienes un campo por cada asignatura y ese campo es de tipo texto. Para que te funcione, tendrás que cambiar el tipo de datos de texto a numero (las notas son números) para que te funcione la fórmula.

Otra opción que quizás te funcione para no tener que cambiar el tipo de daots, sería usar la función Val, para convertir el valor del campo a número, y quitar las comillas de los números:

SiInm(EsNulo(Val([Lengua]);"0";SiInm(Val([Lengua])<5;"Suspenso";SiInm(Val([Lengua])<7;"Aprobado";SiInm(Val[Lengua])<9;"Notable";"Sobresaliente")))))

Hola de nuevo. Lamentablemente sigue sin funcionar. He cambiado el tipo de campo a numérico y eliminado la función Val, quedando así:

SiInm(EsNulo([Lengua];"0";SiInm([Lengua]<5;"Suspenso";SiInm([Lengua]<7;"Aprobado";SiInm([Lengua]<9;"Notable";"Sobresaliente"))))


Da error de sintaxis.

Y si pongo un paréntesis de cierre en el primer criterio, dice que sobra un paréntesis de cierre.

Trabajo con access 97, no se si tendrá algo que ver.


Saludos y mil gracias de nuevo.

Te falta un paréntesis de cierre después del primer Lengua, para cerrar la función EsNulo:

SiInm(EsNulo([Lengua]);"0";SiInm([Lengua]<5;"Suspenso";SiInm([Lengua]<7;"Aprobado";SiInm([Lengua]<9;"Notable";"Sobresaliente"))))

Sigue igual. Si pongo el paréntesis después de la primera función, el error que da es que sobra ese paréntesis; si lo quito, error de sintaxis.

¿Alguna idea?

¿No influye la versión del programa?

Gracias de nuevo.

Pues no sé, hay algo que se me escapa. ¿Te importaría pasarme una copia de tu BD, al menos con la tabla y la consulta de tu pregunta? Los datos puedes borrarlos, y poner un par de ellos inventados. Puedes subirla a dropbox, filebig.net u otro similar, y me pones aquí el enlace de descarga.

Independientemente, te propongo otro método:

Añades un módulo nuevo a tu BD, y le escribes esta función:

Public Function fncNota(Nota as Double) As String

Select Case Nota

Case is <5

fncNota="Suspenso"

Case Is <7

fncNota="Aprobado"

Case Is <9

fncNota="Notable"

Case Else

fncNota="Sobresaliente"

End Select

End Function

Luego, en tu consulta, le pones, en vez del SiInm... esto:

fncNota(Nz([Lengua];0))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas