** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Dcount
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoDcount

 Responder Responder
Autor
Mensaje
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Tema: Dcount
    Enviado: 01/Junio/2023 a las 21:13
Buenas tardes! 
Tengo un formulario para registrar pacientes en una tabla internación, la cual tiene una columna SI/NO,que se actualiza desde otro formulario cuando le doy el alta, mediante una casilla de verificación.
El paciente que voy a internar, se encuentra en un cuadro de lista, cuando doy doble click, hago que busque en la tabla internaciones el ID de ese paciente y en caso de que esté el tilde si, me devuelva un cuadro de texto con el mensaje de que está internado. Para ello en la función al hacer doble click de la lista coloco la siguiente instrucción:

Private Sub lstPacientes_DblClick(Cancel As Integer)

Me.TxtIdPaciente = Me.LstPacientes.Column(2) 'Acá hace que un txt coloque el valor de la columna 2, que es el id del paciente'
If DCount("[IdPaciente]", "Internaciones", "[IdPaciente] = [txtIdPaciente]") > 0 And DCount("[Internado]", "Internaciones", "[Internado] = True") > 0 Then 'Acá en teoría haría lo que estoy tratando de hacer'
MsgBox "El paciente ya está internado.", vbOKOnly + vbInformation, "AVISO"
Me.TxtBuscarPaciente.SetFocus
Exit Sub

Else
Me.TxtPaciente = Me.LstPacientes.Column(0)
End If
End Sub

El problema que tengo es que cuando tengo un paciente internado (Cualquiera sea) y por ende tengo la columna de internado algun tilde, me toma como que cualquier paciente está internado y no me lo deja internar. 
No se si fui preciso con mi explicación, creo que el error está en el Dcount, pero me llama la atención porque tengo otra aplicación que hace una función parecida y no me hace el mismo problema.
Espero alguien pueda ayudarme.
Saludos

Arriba
joanka Ver desplegable
Habitual
Habitual


Unido: 07/Abril/2021
Localización: Lleida
Estado: Sin conexión
Puntos: 140
Enlace directo a este mensaje Enviado: 01/Junio/2023 a las 22:02
La función Dcount no es la correcta creo, has de buscar al paciente que tienes en Txtpaciente si tiene el Internado = True.
Yo usaría Dlookup:

Me.TxtIdPaciente = Me.LstPacientes.Column(2) 'Acá hace que un txt coloque el valor de la columna 2, que es el id del paciente'

Dim vBusqueda as boolean

vBusqueda=DLookup("Internado", "Internaciones", "[IdPaciente] =" & me.txtIdPaciente & "")
'vBusqueda=DLookup("Internado", "Internaciones", "[IdPaciente] ='" & me.txtIdPaciente & "'") 'Si IdPaciente es texto

If vBusqueda = true Then 
MsgBox "El paciente ya está internado.", vbOKOnly + vbInformation, "AVISO"
Me.TxtBuscarPaciente.SetFocus
Exit Sub

Else
Me.TxtPaciente = Me.LstPacientes.Column(0)
End If
End Sub

No lo he probado, pero una vez con esto puedes tener una idea.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14734
Enlace directo a este mensaje Enviado: 01/Junio/2023 a las 23:04
Hola,

Tienes que poner las 2 condiciones en el mismo DCount. Además de que la primera la tienes mal construida.

Tu tienes esto:
If DCount("[IdPaciente]", "Internaciones", "[IdPaciente] = [txtIdPaciente]") > 0 And DCount("[Internado]", "Internaciones", "[Internado] = True") > 0 Then

Y puedes probar con esto:
If DCount("*", "Internaciones", "[IdPaciente] = " & Me!txtIdPaciente & " AND [Internado] = True") >0 Then...

Prueba y nos cuentas

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 05/Junio/2023 a las 00:08
Buenas tardes! Muchas gracias a ambos por contestar!
Me funcionó perfecto la corrección de Xavi! 
Probé también la otra forma que me sugeriste joanka, pero si el paciente estaba internada, me generaba error "método inválido del null"
Muchísimas gracias a ambos por la ayuda
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable