Problema con coma de decimales en consulta access

Buenas Sveinbjorn


MI cuestión es la siguiente. Tengo este código:


SELECT CalificacionD.Nombre, CalificacionD.Competencia, CalificacionD.Nota, DCount("*","CalificacionD","Nombre='" & [Nombre] & "'and Nota<" & [Nota])+1 AS Numerador
FROM CalificacionD;


Si el campo Nota es entero funciona. Pero en cuanto son decimales.... Da error en sintaxis (coma) .


He creado el siguiente módulo:
Function NewCDec(MyVal)
NewCDec = CDec(MyVal)
End Function

Con el que el código queda así:

SELECT CalificacionD.Nombre, CalificacionD.Competencia, CalificacionD.Nota, DCount("*","CalificacionD","Nombre='" & [Nombre] & "'and Nota<" & NewCDec([Nota]))+1 AS Numerador
FROM CalificacionD;


Obtengo el mismo resultado.
¿Como puedo hacer que funcione con demales?
Gracias y un saludo

1 respuesta

Respuesta
1

Tu error viene dado porque el lenguaje SQL sólo "entiende" el inglés, por lo que tendrás que darle un formato inglés a tu campo Nota:

SELECT CalificacionD.Nombre, CalificacionD.Competencia, CalificacionD.Nota, DCount("*","CalificacionD","Nombre='" & [Nombre] & "' and Nota<" & Format([Nota],"Standard"))+1 AS Numerador
FROM CalificacionD;


o si así no te va:

SELECT CalificacionD.Nombre, CalificacionD.Competencia, CalificacionD.Nota, DCount("*","CalificacionD","Nombre='" & [Nombre] & "' and Nota<" & Format([Nota],"#,##0.00"))+1 AS Numerador
FROM CalificacionD;


Otra cosa que veo en tu código SQL, y no sé si es un error o cosa de la web: después de la comilla simple y antes del "And", debes dejar un espacio.

Ya me dirás si es la solución.

Buenas. Gracias por responder.

Si es cosa de la web, en el código tengo separación. Gracias de todas maneras por la observación.

Pues muy a mi pesar he de decir que no me ha funcionado. Sigue saliendo el error de sintaxis (coma):

<a>http://www.subirimagenes.net/i/130906095514789501.png</a>

Con tu permiso te explico brevemente lo que quiero conseguir. Quiero que la consulta añada un campo el cual se rellene con números del 1 al 5 (hay cinco notas por alumno), en donde el 1 será la nota más alta y el 5 la más baja (de cada alumno). Con ello luego haré otra consulta para sacar las 3 notas más altas de cada alumno.

Es decir 3 valores máximos de cada alumno. He probado con TOP pero me devuelve 3 valores máx. pero generales.

¿Qué otra cosa puedo hacer?

Muchas gracias y un saludo

Ya encontré la forma de evitar el problema: hay que usar la función Replace para cambiar la coma por un punto, de este modo:

SELECT CalificacionD.Nombre, CalificacionD.Competencia, CalificacionD.Nota, DCount("*","CalificacionD","Nombre='" & [Nombre] & "' and Nota>" & Replace([Nota],",","."))+1 AS Numerador
FROM CalificacionD;

Fíjate que cambié el signo < por >, para que te ponga el numerador como quieres (1 para la nota mayor)

Otro "fallito" que le veo, y que no logré solucionar después de pelearme mucho con access, es que si tienes dos o más notas iguales, te pone el mismo numerador para esas notas, y luego salta al número correspondiente como si hubiera rellenado todos. Te lo muestro con un ejemplo:

Nombre Competencia Nota Numerador
PEPITO AUT 9,1 1
PEPITO COM 8,5 2
PEPITO TRA 8,5 2
PEPITO APR 7,6 4

Muchas gracias por todo.

Efectivamente con esa función vale. También me di cuenta de lo de las notas iguales. Veremos como lo hacemos.

Muchas gracias y un abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas