VBA Access: Modificar valores en formulario continuo

Necesito que a todos los registros con fechas anteriores a hoy se cambie un valor a "Vencido".
Intenté con este código pero no me funciona, obviamente.

For X = X To Y Step 1
    If Me.txtFHasta.Value < FECHA And Me.lstStatus.Value = 1 Then
        Me.lstStatus.Value = 2
    End If
Next X

Esto implica que:

Si 'txtFHasta' (fecha de vencimiento) es ANTERIOR a Hoy Y, además, su Status es 1 (Activo) entonces cambio el Status a 2 (Vencido).
¿Hay alguna forma de hacer funcionar esto?

Respuesta
2

Puedes poner

docmd.set warnings false

docmd.gotorecord,,acfirst

dim x as integer

for x=1 to form.recordset.recordcount

if fhasta<Date() then status=2

docmd.gotorecord,,acnext

next

Gracias por la respuesta.

Cuando ejecuto tu rutina pasan 2 cosas:

1) No se cambia el Status.

2) Da error 2105 en la línea

docmd.gotorecord,,acnext

¿Sabes qué puede pasar? ¿Tendría que actualizar el form para que se reflejen los cambios?

La culpa es mía me olvidé del end if

docmd.set warnings false

docmd.gotorecord,,acfirst

dim x as integer

for x=1 to form.recordset.recordcount

if fhasta<Date() then status=2

end if

docmd.gotorecord,,acnext

next

¡Gracias!
Igual, hice algunas correcciones y quedó así el código:

Private Sub cmdVencidos_Click()
On Error GoTo ERRH
DoCmd.SetWarnings False
DoCmd.GoToRecord , , acFirst
For x = 1 To Form.Recordset.RecordCount
    If FHASTA < Date And Me.lstStatus = 1 Then
        STATUS = 2
        Y = Y + 1
        Form.Recordset.Requery
    End If
    DoCmd.GoToRecord , , acNext
Next
DoCmd.Save
'Me.lstStatus.Refresh
ERRH:
    If Err.Number = 2105 Then
        MsgBox "Se procesaron " & Form.Recordset.RecordCount & " creedenciales y se cambiaron " & Y & " de ellas.", 48, "Proceso de Lote"
    Else
        ENTORNOERR = "Form_" & Me.Name & ".cmdVencidos_Click"
        Mensajes.ERR_GENERAL_BY_N
    End If
End Sub

De esa manera también me cuenta la cantidad que cambiaron y al poner form.recordset.requery se refleja automáticamente al finalizar. No sé si habrá algo mejor, pero al menos eso funciono.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas