Imprimir página | Cerrar ventana

Verificar registro existente

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84653
Fecha de impresión: 26/Marzo/2026 a las 19:25


Tema: Verificar registro existente
Publicado por: jeanfco49
Asunto: Verificar registro existente
Fecha de publicación: 19/Agosto/2019 a las 15:48
Smile Saludos a todos los miembros de este importante foro, mi consulta es la siguiente, tengo una tabla de matricular alumnos, quiero que cuando se matricule un alumno en un año escolar X, se valide que dicho alumno no se encuentre Matriculado en ese mismo año escolar, lo estoy intentando con Dlookup utilizando los campos Matricula_Alumno y Ano_escolar, sin tener aun ningún resultado satisfactorioCry. Estaré muy agradecido con cualquier sugerencia que me puedan aportar.  Aquí dejo copia del código:

Dim var1 As Variant
Dim var2 As Variant
    
var1 = DLookup("[Ano_Escolar]", "Matricular", "[ano_escolar] =" & "Forms![Matricular Alumnos]!Txt_Ano_Escolar")
var2 = DLookup("[Matricula_Alumno]", "Matricular", "[Matricula_Alumno] =" & "Forms![Matricular Alumnos]!cbo_Buscar")

If (Me.Txt_Ano_Escolar = var1) And (Me.cbo_Buscar = var2) Then

    MsgBox "Este alumno(a) se encuentra matriculado en este periodo escolar, favor de revisar", vbCritical, "Atención"
    Exit Sub

else

   DoCmd.RunCommand acCmdSaveRecord

end if 


-------------
Jeanfco49



Respuestas:
Publicado por: mounir
Fecha de publicación: 19/Agosto/2019 a las 23:16
Hola!

Mírate el ejemplo http://www.mvp-access.es/emilio/Descarga.asp?IdEjemplo=98" rel="nofollow - (98) del maestro Emilio Sancha en su http://www.mvp-access.es/emilio/Access/Descargas.asp" rel="nofollow - página web.

-------------
Un Saludo.


Publicado por: rokoko
Fecha de publicación: 20/Agosto/2019 a las 08:35
Sin ver el ejemplo 98 de Emilio, que seguro que lo clava yo lo haria asi. Una consulta de los alumnos con sus años escolares. Luego un dcount sobre esa consulta utilizando como criterio el campo del año escolar. En el evento antes de actualizar lo ejecutas y si es dcount en mayor que 0 deshaces el registro con un undo y lanzas un msgbox del que ese año escolar existe para ese alumno.


Publicado por: xavi
Fecha de publicación: 20/Agosto/2019 a las 12:32
Hola,

Para empezar las dos lineas de var1 y var2 son incorrectas ya que pones el "valor" entre comillas... lo que lo convierte en literal. Obviamente no creo que exista ningún año escolar que valga (textualmente) "Forms![Matricular Alumnos]!Txt_Ano_Escolar" 

Para mi la solución se orienta más a un DCount con 2 criterios y que estos estén bien construidos.

' Asumiré que Ano_Escolar es un numérico
strCriterio1 = "[ano_escolar] =" & Forms![Matricular Alumnos]!Txt_Ano_Escolar  ' Observa que he eliminado las comillas
' Asumiré (ni que sea a modo de ejemplo) que Matricula_Alumno es un texto
strCriterio2 = "[Matricula_Alumno] =" & Chr(34) & Forms![Matricular Alumnos]!cbo_Buscar & Chr(34)
' Concateno los criterios
strCriterios = strCriterio1 & " AND " & strCriterio2

' Ahora contamos
If DCount("*", "Matricular" strCriterios) > 0 Then
  ' Está Matriculado
End If

Editado para cambiar la comparación de = 1 a > 0


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: jeanfco49
Fecha de publicación: 21/Agosto/2019 a las 16:05
Muy agradecido con todas las sugerencias, las iré probando hasta encontrar la que mejor funciona y les comento.

-------------
Jeanfco49



Imprimir página | Cerrar ventana