Consulta de actualización en un filtro

De nuevo yo, dando lata por aqui

Solicito de su apoyo para realizar lo siguiente... En un formulario llamado BusquedaRegistros he colocado un cuadro combinado que me permite elegir un numero de aula A1, A2, etc., y un subformulario llamado FiltroRegistros en el cual muestra el filtro de los registros (Accesos) a cada aula esto mediante un botón de comando que lleva a cabo la acción después de seleccionar el aula en el combo. Mi pregunta es la siguiente ¿Cómo puedo agregar una consulta de actualización dentro del mismo filtro de manera que me permita establecer el campo horaSalida (en base a la hora del sistema) para todos los registros filtrados en el aula respectiva? Siempre y cuando HoraSalida este en blanco.

¿O de que otra forma puedo actualizar este campo para los registros filtrados?

2 Respuestas

Respuesta
2

Emily: Donde tengas las líneas de Código que te muestran los Registros del SubFormulario, pero después de ellas, inserta éstas otras. Suponiendo que el código lo tengas en el Formulario Principal.

Dim Rst As DAO.Recordset
Set Rst = Me.FiltroRegistros.Form.RecordsetClone
If Not Rst.EOf And Not Rst.BOF Then
    Rst.MoveLast
    Rst.MoveFirst
    Do While Not Rst.EOF
       Rst.Edit
          If Not IsNull(Rst!HoraSalida) Then
              Rst.HoraSalida = Time()
          End If
       Rst.Update
       Rst.MoveNext
    Loop
End If
Rst.Close
Set Rst = Nothing

He escrito sobre la marcha, pero no deberías tener problemas si los Nombres son los que pongo. Un saludo >> Jacinto

Emily: Repasando la respuesta veo que hay una posible fuente de Error

Donde pone >> Rst.HoraSalida = Time()  debes poner Rst!HoraSalida =Time()

Un saludo >> Jacinto

Emily: Ayer debía estar un poco oscuro. Si quieres actualizar los registros que están en blanco, la línea If Not Is Null....... debe ser If Is Null..........de modo que con las dos correcciones el código quedaría:

Dim Rst As DAO.Recordset
Set Rst = Me.FiltroRegistros.Form.RecordsetClone
If Not Rst.EOf And Not Rst.BOF Then
    Rst.MoveLast
    Rst.MoveFirst
    Do While Not Rst.EOF
       Rst.Edit
          If IsNull(Rst!HoraSalida) Then
              Rst!HoraSalida = Time()
          End If
       Rst.Update
       Rst.MoveNext
    Loop
End If
Rst.Close
Set Rst = Nothing

Mis disculpas y un saludo >> Jacinto

¡Gracias!  Jacinto

Una disculpa por la tardanza, haré las pruebas pertinentes y ya veré.

Saludos y gracias por tu apoyo

Respuesta
2

No sería necesario ni el botón. Supongamos que el combinado donde eliges el aula se llama ElegirAula. En sus propiedades-eventos-después de actualizar puedes poner

me.filtroregistros.form.recordsource="select * from nombretablaoconsulta where aula='" & me.elegiraula & "'"

docmd.runsql"update tablaoconsulta set horasalida=#" & time & "# where aula='" & me.elegiraula & "'"

Por ejemplo

DoCmd.RunSQL "update clientes set horasalida=#" & Time & "# where pais= '" & Me.Elegir & "'"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas