Soporte con correccion de codigo

Tengo un codigo que me esta crashiando: necesito que si hay un estudiante con calificacion duplicada lo obvie y siga hacia delante:

DoCmd.SetWarnings False
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Form.Recordset.RecordCount
If Nz(Me.Calificacion, "") <> "" Then
If DCount("*", "Aux", "Materia='" & Me.Parent!cbo_materia & "' AND Alumno='" & Me.Alumno & "' AND Periodo='" & Me.Parent!cbo_periodo & "'") > 1 Then
MsgBox "Ya hay una evaluación para el alumno y materia en ese periodo", vbOKCancel, "AVISO"
Me.Parent.cboteval.SetFocus
Else
DoCmd. RunSQL "insert into aux(curso, alumno, no, calificacion, conducta, periodo, materia, profesor, evaluacion, tipo, fecham)values " _
& "('" & Me.Parent.cbo_curso & "','" & Me.Alumno & "'," & Me.No & ",'" & Me.Calificacion & "', '" & Me.Conducta & "','" & Me.Parent!cbo_periodo & "','" & Me.Parent!cbo_materia & "','" & Me.Parent!cboprofesor & "','" & Me.Parent!cbo_evaluacion & "','" & Me.Parent!cboteval & "','" & Date & "')"
End If
End If
DoCmd.GoToRecord , , acNext
Next
DoCmd. GoToRecord,, acFirst

2 Respuestas

Respuesta
2

El DCount() tienes que compararlo con 0, no con 1 para ver si ya hay coincidencia. Si DCount() devuelve 0 es que no hay registros que cumplan tu condición, si da más de 0, es porque hay ese número de coincidencias.

Un saludo.


Gracias. pero donde me esta explotando es en la parte DoCmd.GoToRecord , , acNext

Y eso lo tengo que saber yo porque soy adivino, ¿no?... je je

¿Cuál es el error?

Respuesta
1

La respuesta que te dan es la correcta, solo incluiría el DCount() entre NZ. Es decir, nz(Dcount(,,,,,,,>0,0 para asegurarme que no halla error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas