Access y Excel: ¿y si no se pulsa ni punto ni coma?

Ya hemos visto cómo solucionar nuestra propuesta inicial en el caso de que el operario dé de alta un dato que contiene un punto o una coma o un dato con los doce caracteres de la cuenta contable; es decir, ya sabemos cómo rellenar de ceros hasta la longitud máxima de las cuentas contables, aunque el operario no dé de alta los doce dígitos o si, (ya nos da lo mismo), el operario ha dado de alta los doce dígitos de la cuenta contable.

Y lo hemos hecho, sin usar para nada líneas de programación; lo hemos hecho usando tan sólo las funciones que pone a nuestra disposición Access o Excel. Esto, por favor, no lo perdamos de vista.

Yo no sé nada de programación, ni de SQL, ni de cómo se debe escribir en lenguaje informático que después debe compilarse. Para ser más concreto, no tengo nada claro que es eso de la compilación. Pero uso el razonamiento lógico. Algo que, a los analistas, no les debe resultar nada extraño. Al final, la pura lógica, el natural razonamiento, es lo que da como resultado lo que perseguimos: que Access o Excel nos muestre la solución correcta.

Pues bien, prosigamos.

Tenemos que contemplar la posibilidad de que el operario no pulse ni la coma ni el punto o dé de alta los doce caracteres de la cuenta contable. Es decir, ¿qué ocurrirá si lo que pulsa el operario es en vez de '43,6599' o '430000006599', tan sólo un '43', así, tal cual, sin punto ni coma?

Vamos a ver dos soluciones, primero la que nos dará en el caso de la pulsación de '43,6599' y después la que nos dará la pulsación de '43'. Para ver los resultados, usaremos la variable [CuentaEspacio].

Supongamos que el operario ha pulsado en el alta para el contenido del campo [Cuenta] el valor "43,6599", o sea, un valor que contiene una coma, tendremos ya cierta información que debemos aprovechar para nuestros cálculos, porque en estos momentos ya sabemos el contenido de todas estas variables:

[Cuenta] = "43,6599"

[EsNúmero] = -1

[PosiciónPunto] = 0

[PosiciónComa] = 3

[Longitud] = 7

[CuentaPunto] = 0

[CuentaComa] = "430000006599"

[CuentaLongitud] = 0

Ahora toca averiguar el resultado para una variable que llamaremos [CuentaEspacio], cuya combinación de condicionales y funciones, es la siguiente:

[CuentaEspacio] = SiInm( [EsNúmero] + [PosiciónPunto] + [PosiciónComa] = -1 Y [CuentaLongitud] = 0 ; [Cuenta] & Der("000000000000" ; 12 - [Longitud]) ; 0)

[CuentaEspacio]: SiInm( -1 + 0 + 3 = -1 Y 0 = 0 ; "43,6599" & Der("000000000000" ; 12 - 7) ; 0)

Que, si lo vemos en un diagrama, veremos enseguida el resultado obtenido para [CuentaEspacio]:



Obviamente, el resultado para la variable [CuentaEspacio] es cero, porque la respuesta a si dos es igual a menos uno y, además, si cero es igual a cero, es 'No'.

Pero ahora, supongamos que el operario ha pulsado en el alta del campo [Cuenta] el valor "43", o sea, un valor que no contiene una coma ni un punto, también sabríamos ya el contenido de todas estas variables:

[Cuenta] = "43"

[EsNúmero] = -1

[PosiciónPunto] = 0

[PosiciónComa] = 0

[Longitud] = 2

[CuentaPunto] = 0

[CuentaComa] = 0

[CuentaLongitud] = 0

En este caso, el resultado para la variable [CuentaEspacio], es la siguiente:

[CuentaEspacio]: SiInm( [EsNúmero] + [PosiciónPunto] + [PosiciónComa] = -1 Y [CuentaLongitud] = 0 ; [Cuenta] & Der("000000000000" ; 12 - [Longitud]) ; 0)

[CuentaEspacio]: SiInm( -1 + 0 + 0 = -1 Y 0 = 0 ; "43" & Der("000000000000" ; 12 - 2) ; 0)

Veamos el resultado en un diagrama:


Por lo tanto, [CuentaEspacio] = "430000000000".

¡Maravilloso!, por favor, no me digáis que no.

Y fijaros en el detalle más importante, la literal "000000000000", tiene doce caracteres, pero nosotros sólo cogemos lo que nos interesa, es decir, diez caracteres por la derecha, ya que la [Cuenta] tiene una longitud de dos caracteres. De este modo, al unir con el operador lógico '&' el contenido de [Cuenta] con lo que cogemos por la derecha del literal, tenemos los doce caracteres de la cuenta contable.

Sólo nos queda por ver el resultado final de todas estas publicaciones antes de proceder con los videos para que lo podáis incorporar todo a Access.

Pero esto será la semana que viene, mientras tanto, no dejéis de sonreír y disfrutad de la vida.

Comentarios