1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
Private Sub btn_LineUp_Click()
On Error GoTo Err_Btn_LineUp
Dim i As Integer
Dim IdEnCours As Long
Dim Rs As DAO.Recordset
Set Rs = CurrentDb.OpenRecordset("SELECT * FROM T_ProtocoleVVC WHERE ID_Protocole =" & Me.ID_Protocole, dbOpenDynaset)
Rs.FindFirst "ID_ProtocoleVVC =" & Me.ID_ProtocoleVVC
'Si c'est le premier enregistrement on ne peut pas faire monter toute la ligne
If Rs.AbsolutePosition = 1 Then
MsgBox "Vous ne pouvez pas déplacer cette ligne vers le haut"
Exit Sub
Else
For i = 2 To Rs.Fields.Count
Dim Temp(i), ActStr(i) As String
'Mémorise la valeur du champ correspondant de l'enregistrement en cours
ActStr(i) = Nz(DLookup(Rs.Fields(i).Name, "T_ProtocoleVVC", Rs("ID_ProtocoleVVC") = Me.ID_ProtocoleVVC), "")
Rs.MovePrevious
'Mémorise la valeur de l'enregistrement précédent
Temp(i) = Nz(DLookup(Rs.Fields(i).Name, "T_ProtocoleVVC", Rs("ID_ProtocoleVVC") = Me.ID_ProtocoleVVC), "")
'Mise à jour de l'enregistrement précédent avec la valeur correspondante en cours
.Update Rs.Fields(i), ActStr(i)
'Mise à jour de l'enregistrement en cours avec la valeur précédente mémorisée
Rs.MoveNext
.Update Rs.Fields(i), Temp(i)
Next i
DoCmd.RunCommand acCmdSaveRecord
Me.Form.Requery
End If
Rs.Close
Set Rs = Nothing
End Sub |
Partager