Historique et control type
Le
MULLER

Bonsoir
J'ai trouvé dans les forums les routines pour créer une table contenant
les modifications apportées dans une autre table.
Cette routine ne mémorise que les modifications sur 3 types de contrôle
, n° 106,109 et 111.
Question: Ou trouver la liste de ces numéros de controle ?
merci
-
If Me.Dirty = True Then
frmAJouterHistorique Me
End If
Sub frmAJouterHistorique(frm As Form)
'
'control type 106 checkbox
' 109 textbox
' 111 combo
On Error Resume Next
For Ctr = 0 To frm.Controls.Count - 1
If frm.Controls(Ctr).ControlType = 106 Or frm.Controls(Ctr).ControlType
= 109 Or frm.Controls(Ctr).ControlType = 111 Then
If frm.Controls(Ctr).Value <> frm.Controls(Ctr).OldValue Then
Dim T_Historique As Recordset
SetT_Historique=CurrentDb.OpenRecordset("FICHIERHISTO",DB_OPEN_TABLE)
T_Historique.AddNew
T_Historique("NomTable") = frm.RecordSource
T_Historique("NomChamp") = frm.Controls(Ctr).Name
T_Historique("AncienneValeur") = frm.Controls(Ctr).OldValue
T_Historique("NouvelleValeur") = frm.Controls(Ctr).Value
T_Historique("DateHeure") = Now
T_Historique.Update
T_Historique.Close
End If
End If
Next
End Sub
'
J'ai trouvé dans les forums les routines pour créer une table contenant
les modifications apportées dans une autre table.
Cette routine ne mémorise que les modifications sur 3 types de contrôle
, n° 106,109 et 111.
Question: Ou trouver la liste de ces numéros de controle ?
merci
-
If Me.Dirty = True Then
frmAJouterHistorique Me
End If
Sub frmAJouterHistorique(frm As Form)
'
'control type 106 checkbox
' 109 textbox
' 111 combo
On Error Resume Next
For Ctr = 0 To frm.Controls.Count - 1
If frm.Controls(Ctr).ControlType = 106 Or frm.Controls(Ctr).ControlType
= 109 Or frm.Controls(Ctr).ControlType = 111 Then
If frm.Controls(Ctr).Value <> frm.Controls(Ctr).OldValue Then
Dim T_Historique As Recordset
SetT_Historique=CurrentDb.OpenRecordset("FICHIERHISTO",DB_OPEN_TABLE)
T_Historique.AddNew
T_Historique("NomTable") = frm.RecordSource
T_Historique("NomChamp") = frm.Controls(Ctr).Name
T_Historique("AncienneValeur") = frm.Controls(Ctr).OldValue
T_Historique("NouvelleValeur") = frm.Controls(Ctr).Value
T_Historique("DateHeure") = Now
T_Historique.Update
T_Historique.Close
End If
End If
Next
End Sub
'
Bonjour,
Là, pour Access 2007 :
http://msdn.microsoft.com/en-us/library/office/bb225848%28v=office.12%2 9.aspx
Ma recherche était "acControlType"
qui permet de verrouiller tous les contrôles d'un formulaire, ou
seulement ceux d'un certain type :
http://access.jessy.free.fr/htm/Form/LockedControls.htm
Si un traitement différent doit être appliqué selon le type du cont rôle,
plutôt qu'un If, on utiliserait probablement plutôt
Select Case Control.Type
Case acButton
'ici le code pour un bouton
Case acTextBox
'ici le code pour une zone de texte
Case acLabel
'ici le code pour une étiquette
'...
Case Else
' ici les cas non prévus ci-dessus
End Select
Au sujet de Select Case voir illustration aussi ici :
http://officesystemaccess.seneque.net/vba/select_case.htm