Mostrar el 0 en cuadro de lista

Tengo una consulta que cuenta el total de registros del campo "papilla _1", otra cuenta el total del campo "papilla_2" y así unas cuantas.

Me interesa a través de un cuadro de lista visualizar sólo la cuenta de "papilla_1", o cualquier otra, todo va en relación a la las edades y necesidades de los bebés.

Si consigo los resultados en la consulta y en el formulario a excepción de los que son '0".

Cuando un cuadro de lista es 0, me da error, ya que el cuadro va insertado en un formulario que muestra los distintos días del menú elaborado y no deja funcionar bien ese formulario, si eres positivo no da problemas y se ve. Además, si quiero los cuadros de lista que deberían ser 0, no da problemas el formulario

Como se puede mostrar el "0" el la cuenta del campo de lista. He probado con SiInm y Nz en la consulta pero no me aclaro y siempre me algo..

2 respuestas

Respuesta
1

Reconozco que me he perdido. Pero por si te sirve, si tengo la tabla

Donde puedes ver que no hay Papilla3

Y construyo una consulta como la imagen donde se muestra el primer campo, los demás son igual

Al abrirla

Pero ya te dije que me he perdido, porque para un cuadro de lista lo mejor es usar

me.lista0.additem=....

No tenía acceso a la red con el ordenador y no podía contestar, perdón.

Gracias por una respuesta tan rápida.

Yo mismo lo he liado, intentaré aclararlo. Los tipos de papillas van en relación a los rangos de las edades, pero la idea si es más o menos. 

Tengo una consulta con los rangos por edades

Quiero que la cuenta de un sólo rango que sería las papillas (que lo he liado) se muestre en el formulario como se ve a continuación

Pero algunos de ellos quedan sin valor y al actualizar el formulario me muestra este error, que supongo que será porque los cuadros de lista quedan sin datos, ya que antes no lo hacía. Antes de poner los cuadros, me explico.

Que lo tengo en el evento del formulario al ocurrir un error

Private Sub Form_Error(DataErr As Integer, Response As Integer)
If DataErr = 3022 Then
MsgBox "El día ya existe"
Response = acDataErrContinue
End If
End Sub

Se que son más cosas pero para mi es todo el mismo problema. Gracias y perdón por no explicarme bien desde un principio.

Muchas gracias

Por lo que pones en el evento me da la impresión que la fecha 07-Dic-2020 la escribes tu. Si es así te aconsejaría que en el evento Antes de actualizar de ese cuadro de texto, que para el ejemplo, llamaremos FechaComida crees un procedimiento de evento y entre Private Sub... y End Sub pongas

If nz(dcount("*","nombredelatabla","fechaquesea=#" & me.fechacomida & "#"))>=1 then

Msgbox"Va a ser que no, ese día ya existe", vbokonly+vbexclamation,"Cambia de día"

Docmd. Cancelevent

end if

Me explico, cuando tu escribas una fecha en el cuadro de texto FechaComida y pulses Enter, lo primero que hace en comprobar si ya existe ese día en el campo Fechaquesea de la tabla NombredelaTabla. Si existe, te muestra el mensaje, y cuando aceptas, el cursor se "queda" en FechaComida para que cambies el valor.

Y, por lo que me parece entender, quieres que en los cuadros de texto te aparezca el rango que figura a la derecha. No necesitas la consulta. Supongamos que los cuadros de texto se llaman respectivamente, empezando por la izquierda, Seis, Nueve, Doce, Dieciocho y Dos

En el evento Después de actualizar del cuadro de texto FechaComida puedes poner

Seis=dcoun("*","nombredelatabla","fechaquesea=#" & me.fechacomida & "# and rango=""De 6 a 9"

Nueve=dcount("*","nombredelatabla","fechaquesea=#" & me,fechacomida & " and rango="De 9 a 12"

Y así los demás.

Lo mejor sería que pusieras una imagen del diseño de la tabla y una imagen de la tabla con datos inventados, porque creo que se puede hacer más sencillo sin necesidad de consultas.

Te decía lo de que no eran necesarias las consultas, porque si tengo una tabla con 11 niños con sus fecha de nacimiento. Puedes ver que el amigo Thomas ya está crecido pues tiene 3 años y aprox 7 meses, lo que hace que se salga de los rangos, por tanto nos quedan 10 niños

Si abro un formulario

Ya me los distribuye por rangos de edad. Los cuadro de texto se llaman Cero, Seis, Nueve, doce, dieciocho y Dos

En este caso, en el evento Al activar el registro tengo puesto

Private Sub Form_Current()
Cero = DCount("*", "niños", "datediff(""m"",fechanacimiento,Date())>0 and datediff(""m"",fechanacimiento,Date())<=6")
Seis = DCount("*", "niños", "datediff(""m"",fechanacimiento,Date())>6 and datediff(""m"",fechanacimiento,Date())<=9")
Nueve = DCount("*", "niños", "datediff(""m"",fechanacimiento,Date())>9 and datediff(""m"",fechanacimiento,Date())<=12")
Doce = DCount("*", "niños", "datediff(""m"",fechanacimiento,Date())>12 and datediff(""m"",fechanacimiento,Date())<=18")
Dieciocho = DCount("*", "niños", "datediff(""m"",fechanacimiento,Date())>18 and datediff(""m"",fechanacimiento,Date())<=24")
Dos = DCount("*", "niños", "datediff(""yyyy"",fechanacimiento,date())>2 and datediff(""yyyy"",fechanacimiento,Date())<=3")
End Sub

Y te dejas de enojosas consultas.

Buenas noches.

Gracias por las respuestas, para mi eran imaginables.

Me falla esto:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "comida", "fecha=#" & Me.Fecha & "#")) >= 1 Then
MsgBox "Va a ser que no, ese día ya existe", vbOKOnly + vbExclamation, "Cambia de día"
DoCmd.CancelEvent
End If

End Sub

El nombre de la tabla es "Comida", el campo de la fecha en la tabla  se llama "Fecha" y en el formulario el campo fecha es el de la tabla, osea que también se llama "Fecha"

Cuando inserto una fecha nueva, aunque sea la semana que viene me sale el mensaje de aviso y no puedo incorporar ninguna fecha, osea que para poder ingresar fechas tengo que cancelar el código, seré yo, seguro, pero en qué?

Lo demás que me has aportado es perfecto, además me ha permitido ver que tenía errores en los cálculos de las edades que no coincidían con los rangos.

Te aporto las tablas por si ves algo.

Y bueno, muchísimas gracias por tu tiempo. 

Por un lado, no es Form_Before Update, ya que no actualizas el formulario. Si revisas la respuesta que te dí te decía en el evento Antes de actualizar del cuadro de texto FechaComida, porque ese valor si lo actualizas. Mira, si tengo el formulario Copia

Puedes ver que tengo un registro ya con fecha 08/07/2020. Si en otro escribo esa fecha que ya está( el cursor todavía está en el campo FechaPedido. Al pulsar Enter

Cuando acepto, el cursor se "queda" en el control FechaPedido. Lo cambio

Pulso Enter y sin problemas

Me voy a otro y

Pulso Enter y

Como no sé la configuración de fecha y hora, ni la regional de tu ordenador, sería conveniente que lo pusieras como

Private Sub FechaPedido_BeforeUpdate(Cancel As Integer)
If Nz(DCount("*", "copia", "fechapedido=forms!copia!fechapedido")) >= 1 Then
MsgBox "No puede ser, esa fecha ya está guardada", vbOKOnly + vbExclamation, "Debes cambiarla"
DoCmd.CancelEvent
End If
End Sub

Lo de forms!... es para que coja la fecha literal que está escrita. Al ponerlo como #"....puede "traducirlo" a fecha americana que es mm/dd/aaaa y te daría error.

Hola de nuevo,

He creado una nueva base con el ejemplo que me mandaste, va perfecto y funciona

Pero no me funciona en mi base de datos actual, inicialmente creía que el evento era del formulario pero al crear la nueva base me di cuenta que era en el campo fecha (sin comentarios)

Ya no se que hacer, he probado con los ejemplos pero no hay manera, he quitado hasta el formato de la fecha dejándolo a genera e incluso una mascarada de entrada.

La fecha nueva que ingreso no existe, sería la nueva fecha para confeccionar un nuevo menú, por si sirve de algo

Yo creo que está bien, pero no se que esta mal.

Muchas gracias de nuevo

¿Has comprobado que el control Fecha se llame así? Mira en sus Propiedades-Otras-Nombre.

Y si quieres, repito, si quieres, mándame una copia vacía, solo con la tabla y el formulario. Es para ver el tipo de campos.

Mi correo es [email protected]  Si lo haces, en el asunto del mensaje pon tu alias Kokku, ya que si no sé quien me escribe ni los abro.

Respuesta
1

¿Puede colocar una imagen para analizar mejor la pregunta?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas