Se puede verificar el estado de un checkbox en una consulta?

Hola a todos.

Estoy trabajando en una base de datos para administrar una pequeña empresa. Uno de los cálculos necesarios es la comisión por ventas de los empleados (día a día). El sistema que diseñé verifica qué empleado está a cargo del turno actual mediante dos posibles checkboxes (uno para cada empleado), los cuales están ubicados en las planillas diarias de venta (formularios).

Hasta ahí voy bien. El problema es que la liquidación de sueldos la hice mediante una consulta, en la cual no puedo especificar de qué empleado se trata, por lo que al hacerse los cálculos se suman las comisiones de ambos empleados en ambas liquidaciones.

Supongo que lo ideal sería que en las consultas de liquidación de cada empleado se pudiera especificar cual checkbox está activado, pero no sé si eso se puede hacer. Mi nivel de Access es muy básico.

¿Podrían ayudarme por favor? Y si la solución es a través de código, ¿podrían explicarme detalladamente cómo escribirlo y DÓNDE?

El campo de la consulta es este:

COMISION: (([TOTAL ENTRADA])+([TOTAL CREDITO]))*10/100

1 respuesta

Respuesta
1

Una casilla de verificación puede tomar dos valores: Activado (o Verdadero o -1) y No Activado (o Falso o 0).

Por tanto, si quieres filtrar en tu consulta los registros que tengan la casilla "TURNO CARLOS" Activada, puedes ponerle como criterio a esa columna en el diseño de la consulta "Verdadero" o también puedes ponerle -1.

Así al ejecutarla te devolverá solo los registros que la tengan activada. Lo mismo para el otro empleado.

Otra forma de trabajar con checkboxes para realizar cálculos, sabiendo que pueden tomas esos dos valores numéricos (-1 o 0), es usar el propio campo en el cálculo, por ejemplo:

ComisionCarlos: Abs([TURNOCARLOS]*[VENTASCARLOS]*[PORCENTAJECOMISION])

Así, si la casilla está marcada, devolverá un valor, y si no lo está, devolverá: 0

Gracias por tu respuesta.

Intenté las dos posibles formas, pero en el caso de usar Abs no ocurre nada diferente, se sigue calculando la comisión en los campos de los dos empleados.

En la otra forma no sé cómo colocar el parámetro, me refiero a los paréntesis o corchetes. Podrías explicármelo por favor?

Si pones:

COMISION: Abs([TURNO CARLOS]*([TOTAL ENTRADA]+[TOTAL CREDITO]))*10/100

Te devolverá el cálculo de la comisión para Carlos si la casilla está activada o 0 si no lo está.

Para la otra casilla sería lo mismo cambiando los nombres.

Después de que te respondí logré hacerlo así:

COMISION: ([TURNO CARLOS]=Verdadero)*([TOTAL ENTRADA]+[TOTAL CREDITO])*-10/100

Tuve que pasar el 10 a negativo porque me devolvía el resultado en negativo.

Acabo de probar el tuyo y funciona perfecto. Cual me recomendás que utilice? Digo, para la base de datos es lo mismo?

Tu construcción es un tanto extraña, y además, tiene mucha "paja". Por ejemplo:

[Turno Carlos] ya tendrá un valor verdadero o falso, en función de si está o no marcada. Para Access, que esté marcado (Verdadero), es -1, y que no lo esté (Falso) es un 0.

Con [Turno Carlos]=Verdadero, haces una comparación incecesaria (Verdadero=Verdadero => que es Verdadero (un -1) o Falso=Verdadero => que es falso (un 0), pues ese valo ya lo contiene el propio campo [Turno Carlos]

El que pongas el signo "-" en el 10 es indiferente a que lo pongas al principio, en el 100 o en otro cmapo, por las propiedades de la multiplicación.

En mi expresión, uso la función Abs() para que devuelva el valor absoluto del resultado, que siempre es el valor con signo positivo.

Explicadas las dos expresiones, usa la que mejor entiendas, porque llevan al mismo resultado.

Como bien dijiste, solo debería bastar con [Turno Carlos], ya que ahí supuestamente está incluido el valor del checkbox, pero por alguna razón que se me escapa, no funciona, a menos que agregue el = Verdadero.  

Te agradezco muchísimo por tu interés y si puedo abusar un poco más de tu ayuda te pregunto acerca de un par de cosas más, con las que la aplicación quedaría terminada al 100%.

Quisiera incluir la liquidación de los aguinaldos de ambos empleados. Para esto debe calcularse la suma de los sueldos cobrados por semestre y el total dividirlo entre 12. El problema es que los períodos semestrales van de Diciembre a Mayo, y de Junio a Noviembre, y no he encontrado una forma de plantearlo para hacer el cálculo. De hecho, tampoco he podido ordenar los valores del campo mes en la consulta, ya que en vez de ordenarlos por mes me los ordena por orden alfabético.

Y la otra cuestión es más por estética. En un formulario de pedidos de clientes utilicé un cuadro de texto independiente a modo de fondo, para que cuando se verifique el valor de un checkbox el fondo cambie de color (formato condicional). Esto es si el pedido en cuestión está pago o en debe. Si está en debe se ve el fondo normal, y si está pago el fondo (el cuadro de texto) cambia de color.

Bien, como se trata de un cuadro de texto, si por error se hace click sobre cualquier parte del fondo/cuadro de texto, el mismo pasa al frente para permitir la escritura, y por lo tanto tapa todo el formulario. Esto se soluciona presionando tabulador, pero algunos usuarios de la aplicación se van a hacer un lío. Ya intenté algunas cosas como deshabilitar el cuadro al hacer foco, o al hacer click, pero no funciona. 

Te agradecería si podés ayudar con estas dos cuestiones. Con esto la aplicación estaría terminada.

Como las preguntas no tienen relación con la inicial, plantea cada una en una nueva. Así, si otro usuario tiene una duda similar, podrá encontrar la solución a la misma.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas