Dcount |
Responder |
Autor | |
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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 |
|
joanka
Habitual Unido: 07/Abril/2021 Localización: Lleida Estado: Sin conexión Puntos: 140 |
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.
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
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
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |