Access - Generar campo numerico

   
Vista:

Generar campo numerico

Publicado por Nacho (14 intervenciones) el 26/02/2016 13:28:47
Buenos días amigos

Tengo un problemilla que seguro vosotros, solo con verlo, sabéis como solucionarlo. Pero a mi me está volviendo loco

Resulta que tengo una consulta que crea una tabla. Esta consulta tiene un campo calculado de esta forma

Nota final : SiInm(Nz([Nota a])>Nz([Nota b]);Nz([Nota a]);Nz([Nota b]))

En resumen, me calcula la nota máxima de varios campos. Bueno, perfecto, lo hace sin problemas y funciona correctamente

El inconveniente es que, en la tabla que se crea, el campo tiene formato TEXTO y yo necesito que el campo creado tenga formato NUMERO y no se como hacerlo. El que salga como sale me está trayendo algún inconveniente serio

¿Me podéis indicar como decirle a la consulta que el campo sea numérico y no de otro tipo?

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
información
Otras secciones de LWP con contenido de Access
- Código fuente de Access
- Cursos de Access
- Temas de Access
- Chat de Access
información
Códigos de Access
- RoloButtons
- manejos de formatos
- Calculo del IBAN

Generar campo numerico

Publicado por Enrique Heliodoro (1663 intervenciones) el 26/02/2016 14:02:05
Esa expresión (aunque funcione) no esta bien ....
La función Nz tiene DOS parámetros, el primero es lo que se desea evaluar, el segundo el valor que retornara si se cumple que es un NULL.

Posiblemente si se construyera correctamente seria mas que suficiente:
Nota_final : SiInm(Nz([Nota a]; 0)>Nz([Nota b]; 0);Nz([Nota a]; 0);Nz([Nota b]; 0))

Y si aun asi fuese rebelde (se partiría de que las notas son interpretadas como texto) se puede 'convertir' a numero un texto que lo representa:

Nota_final : VAL( SiInm(Nz([Nota a]; 0)>Nz([Nota b]; 0);Nz([Nota a]; 0);Nz([Nota b]; 0)) )
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

Generar campo numerico

Publicado por Nacho (14 intervenciones) el 27/02/2016 08:30:09
¡¡¡¡Gracias, gracias, gracias, GRACIASSSSS!!!!!

Da gusto preguntaros cosas, sois una pasada. Perfecto, solucionado el problema

En cuanto a la primera parte, no lo he cambiado. Hay gente que no tiene calificaciones y no tienen que tener un cero. Si cambio la fórmula, a los que no tienen les clavará un cero y no es cierto, por lo que lo he dejado como estaba. Pero ciertamente no lo sabía, por lo que me lo apunto, seguro que habrá otras ocasiones.

En cuanto a la segunda, ha funcionado. Los cambia a formato numero y ya puedo trabajar correctamente con esos datos, por lo que ¡PERFECTO!

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

Generar campo numerico

Publicado por Nacho (14 intervenciones) el 27/02/2016 09:57:17
Agggggg, sigo con problemas...

Profundizando me doy cuenta que me da un número, sí, pero me quita los decimales, me lo redondea... ayyyyyyyyy ¿como hago para que no haga eso, me lo saque con decimales... Llevo hora y media solo con eso y no puedooooo

Por favor

Gracias de nuevo

PD.: Corrijooooooo funcion "CDoble", en vez de Val.... solucionado

Graciassss
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

Generar campo numerico

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/02/2016 10:07:14
Val tiene un inconveniente, y es que toma la parte numérica que encuentre, hasta que encuentre un carácter no numérico (y según el entorno, puede decidir que la coma no es un separador decimal valido, pues espera el punto).

¿y la opción de utilizar la función como mandan los canones?....
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

Generar campo numerico

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/02/2016 10:01:44
Si no se le aplica un valor (el alternativo) a la función NZ, Access evaluara por su cuenta y aplicara un cero o una cadena de texto vacía, (lo que el considere adecuado).

Si hubiese devuelto un cero, lo habría interpretado como numero (y al parecer lo interpreta como texto) lo que da lugar a suponer que lo ha interpretado como texto ....

Al respecto a que si se le aplica un cero como nota .... en fin, creo que hay que levantar la mirada para ver el horizonte y no extraer supuestos que no tienen ninguna lógica.

Según 'las reglas de las matemáticas' (que me avergüenza tener que recordar aquí y ahora) el cero es ese valor que define lo indefinible, comenzado a utilizar por los indios y que los árabes copiaron y nos enseñaron.

Su existencia (en y para casos como este) no implica 'calificar con un cero', sino tener un 'valor matemático' contra el que efectuar 'una comparación aritmética'.

Si se desease obtener la media, se obraría de igual manera, pero el divisor 'contaría' aquellos valores 'que no fuesen NULL' para que la media solo se efectuase con notas reales (pero en el dividendo se sumarian ceros supliendo a los NULL).

Otra forma (ortodoxa) de aplicar la comparativa para obtener el mayor (sin NZ), consistiría en filtrar el conjunto de datos, para que los NULL no formasen parte de ese conjunto ....
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

Generar campo numerico

Publicado por Nacho (14 intervenciones) el 27/02/2016 10:15:37
Un cero es un cero. Si un alumno tiene un cero, es que no ha estudiado nada. Nada no, nada de nada. Esto también lo saben los indios y los árabes. No es lo mismo que no tener nota (perdón por la broma...)

Ya os lo he puesto arriba. En vez de usar VAL se usa CDoble y solucionado. Me ha costado pero lo he encontrado

Gracias de nuevo a todos. Sois formidables

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

Generar campo numerico

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/02/2016 11:05:16
Cambia ese chip ....

No se ha calificado a nadie como un cero, solo se utiliza ese valor como simple elemento matemático para hacer una comparación correcta, si se tiene una vision tan cerrada es muy probable que se juzgue como incorrecto aquello que no se entiende porque la vision de otro tiene mas profundidad que la propia (y con ese 'otro' hago referencia a cualquier alumno).
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

Generar campo numerico

Publicado por Nacho (14 intervenciones) el 27/02/2016 12:12:04
Enrique, no lo pillo...

Si access me introduce un cero en el campo en cuestión cuando lo encuentra vacío, eso es una calificación. Digamos que, para mí, puede haber dos opciones:
A- Que tenga nota. Entonces sale un número
B- Que no tenga nota. Entonces no sale ningún número

Si veo un cero en un caso B, entonces pensaré que está en el A. Para mí entonces está suspenso (muy suspenso)

No entiendo que quieres decirme, perdona. ¿Qué diferencia hay entonces entre uno que saca un cero y se le carga un cero y otro que no tiene nota pero el sistema, al hacer los cálculos le pone cero? No sabría como diferenciar uno de otro.

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

Generar campo numerico

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/02/2016 17:07:09
La función Nz evalua un dato y devuelve como valor el dato evaluado o el alternativo si el dato evaluado es un null (creo que este punto esta claro y no es 'el problema').

¿Qué puede devolver Nz?.... lo que queramos, unos simples ejemplos:
Nz(DatoAEvaluar,"no hay valor en el campo") ==> Un texto
Nz(DatoAEvaluar, Date()) ===> La fecha del sistema
Nz(DatoAEvaluar, 0) ===> el cero (valor numérico)
Nz(DatoAEvaluar, 123456) ===> (otro valor numérico)
Nz(DatoAEvaluar,"") ==> Una cadena de texto vacia
Nz(DatoAEvaluar, #22/2/2016#) ==> Una fecha

Pero ese dato devuelto es efímero, ¿porque? .... Porque no sustituye al valor real (que seguirá siendo un NULL)
Solo 'lo modificaria' si lo utilizamos asi (asignándolo):

Nota_del_mes_de_septiembre = Nz(Dato a evaluar, 0)

A partir de esa asignación, el mes de septiembre YA NO SERA UN NULL, porque le hemos asignado un valor (el que hubiere si no es null, un cero o lo que se indique si antes era un null).

Hay que prestar atención al detalle:
Nz solo funciona con valores NULL, pero entendiendo que el null lo provoca el hecho de que ese objeto (un campo de una tabla ...) no ha sido inicializado (su valor real es Empty)

Si el objeto 'no existe' en ese contexto, su supuesta existencia de tendra que evaluar con una función adecuada (IsNull, IsNumeric, IsDate ...) y si se desea un valor alternativo (para emular a Nz) se tendrá que utilizar en el contexto de un IIF:
==> IIF (IsNumeric(NotaDelMEs), NotaDelMes, 0)
==> IIF (IsNumeric(NotaDelMEs), NotaDelMes, "No presentado al examen")
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

Generar campo numerico

Publicado por Nacho (14 intervenciones) el 27/02/2016 18:38:30
Ah, ya lo veo.

Me estás indicando entonces que, cuando un alumno no tiene nota, debe de poner "no presentado a examen" o lo que se considere, pero no un campo vacio o, como indicas, no inicializado, ¿es así?

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

Generar campo numerico

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/02/2016 19:27:10
Abandono el barco ...

Veras esto se me asemeja a :

Circulaba un camión cargado de agujeros por una carretera, se le cayó un agujero, dio marcha atrás para recoger el agujero y... se calló por el agujero.

Haz lo que parezca oportuno, y pon las notas que consideres adecuadas, pero si admites un consejo ... intenta evitar los campos de tipo null, nada es igual a nada y ese tipo de dato es muy conflictivo.
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

Generar campo numerico

Publicado por Nacho (14 intervenciones) el 27/02/2016 19:49:09
Mi nivel no es tan elevado como el tuyo, que más quisiera. Solo me defiendo, hago mis aplicaciones y funcionan.

Seguro que si vieras una de mis aplicaciones te echarías las manos a la cabeza, por múltiples motivos pero... he aprendido a martillazos, con libros y gracias a la ayuda de gente como tú que desinteresadamente pierden el tiempo con manazas como yo. Y San Google, al que le pongo una vela casi a diario.

Por lo menos, gracias a estas chapuzas, trabajos que me llevarían semanas los hago en minutos... por suerte.... Para que te hagas una idea, con esta base de datos gestiono 27500 registros diferentes en cada curso escolar. Y en cada registro hay, a parte de DNI, datos personales ... tres calificaciones. Imagínate sin esta herramienta que sería de mi.

Perdona si te he hecho perder el tiempo.

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