Ejecutar Expresión DCont con varios criterios de Selección

Me gustaría me orientaran en lo siguiente. Sucede que tengo una tabla; T_Cotizaciones, cuyos campos son; numero, idcliente, estatus (aprobadas-Rechazada)

Tengo un formulario (F_ANALISIS), donde tengo un cuadro de texto llamado Idcliente.

Quiero usar la función DCOnt en un cuadro de texto (texto01) para traer las cotizaciones bien sean aprobadas o Rechazadas y que a su vez me tome el cuadro de texto de IDcliente para traer las cotizaciones aprobadas para ese cliente, y cada vez que cambie el Idcliente; el texto01 con la expresión DCont se actualice

Hice algo pero solo con un criterio ( Aprobadada) pero no logro hacer que funcione para dos o más criterio, aquí la expresión que me gustaría completaran.

=DCont("*";"[t_cotizaciones]";"[estatus]='aprobada'")

Respuesta
2

Puedes encadenar hasta 99 condiciones and y or. Por ejemplo

TextA=dcont("*";"t_cotizaciones";"estatus=""aprobada"" and idcliente=5 or Idcliente=7 and ciudad=""Londres"" or ciudad=""Pekin"" and pagada=""Si""") y así hasta 99

Cuando el objeto, sea control, sea tabla, consulta, etc tiene el nombre "todo junto" no hacen falta corchetes

Pulsé el botón Enviar sin querer. En tu caso sería

Texto01=dcont("*";"T_cotizaciones";"estatus=""Aprobada"" and idcliente=" & me.idcliente & "")

Estoy suponiendo que el Idcliente es numérico

Pero, si me permites un consejo, yo "dejaría libre" el origen del control del cuadro de texto Texto01, y si el cuadro de texto Idcliente, lo rellenas tú, en sus propiedades-eventos-después de actualizar crearía un procedimiento de evento y entre Private Sub y End sub pondría

Texto01=dcount("*","T_cotizaciones","estatus=""Aprobada"" and idcliente=" & me.idcliente & "")

Apreciado Julián González Cabarcos, me sirvió muy bien el ejemplo. una ultima consulta; usando este ultimo ejemplo, supongamos que quiero agregarle mas criterios, por ejemplo;
Vencida (SI/NO) SI

Enviada (SI/NO) No.

Etc, como agregaría el/los "And", esto me confunde un poco.

Gracias siempre por el apoyo

Otra cosa. Es que efectivamente el cuadro IDcliente no lo lleno manual, sino que lo hago mediante una expresión en el origen del control, esto es un problema porque cuando lo hago así no me trae la cuenta, pero cuando lo hago manual(como dices tú) si hace la cuenta. Pregunta: ¿No hay posibilidad de conseguir una manera de que al actualizarlo me haga la cuenta sin tener que rellenarlo manual?

No problem. Como te dije puedes encadenar hasta 99( no me preguntes porqué) La única duda que tengo es si Vencida es una casilla de verificación( donde "marcarla" equivale a Sí) o es un cuadro de texto donde pone Sí o No. Vamos a suponer el primer caso. Si el campo Vencida, lo has creado en la tabla no tienes problemas, ya que si no le dices nada le asigna el valor No=0. Si lo hubieras hecho en el formulario con el asistente, automáticamente le asigna un tercer estado

Con lo que tendríamos que añadir otro criterio. Pero vamos a suponer que "ya estaba" en la tabla.

Texto01=dcont("*";"T_cotizaciones";"estatus=""Aprobada"" and idcliente=" & me.idcliente & " and vencida=-1 and Enviada=0")

En caso de que fueran cuadros de texto

Texto01=dcont("*";"T_cotizaciones";"estatus=""Aprobada"" and idcliente=" & me.idcliente & " and vencida=""Si"" and Enviada=""No""")

Me salté una pregunta. Es que lo puedes hacer de mil formas. Todo depende de donde quieras verlo y como quieras verlo. Por ejemplo, si tengo la tabla T_Cotizaciones(también tengo una tabla Clientes)

Con ella hago un formulario, da igual único o continuo, lo pongo de ésta última forma porque creo que se ve mejor. En el encabezado del formulario le he puesto un cuadro de texto que me va a indicar los registros que cumplen esos criterios.

Elijo un cliente y relleno o no los siguiente controles

En el primer registro, aun no me pone nada( pero se le podía decir que lo calculara ya).

Si vuelvo a elegir ese cliente

En el cuadro me indica que ESE cliente tiene 1 registro que cumple esos criterios. Si cambio de cliente, el cuadro me mostraría lo de ese nuevo cliente.

En este caso, al no saber como tienes construido el formulario, le he puesto, en el evento Después de actualizar del combinado( que se llama Idcliente y el valor que guarda es el Idcliente)

Private Sub IdCliente_AfterUpdate()
Texto9 = DCount("*", "t_cotizaciones", "idcliente=" & Me.IdCliente & " and estatus=""Aprobada"" and vencida=-1 and enviada=0")
End Sub

En el caso de otro formulario, cuando elijo un cliente( en realidad elijo el idcliente)

Me aparece

O lo que le quieras poner. En este caso en el evento Después de actualizar del combinado, que se llama elegir cliente le tengo puesto

Private Sub ElegirCliente_AfterUpdate()
Dim i As Integer
i = DCount("*", "t_cotizaciones", "Idcliente=" & Me.ElegirCliente & " and estatus=""Aprobada"" and vencida=-1 and enviada=0")
MsgBox "Ese pobre desgraciado tiene " & i & " cotizaciones aprobadas, sí vencidas pero no enviadas", vbokoonly + vbInformation, "Y eso que es un cliente VIP"
End Sub

Por eso sería conveniente que pusieras una imagen de tu formulario.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas