Bonjour,
Dans un environnement multiutilisateur avec supervision en temps réel, j'ai un formulaire de surveillance contenant trois sous-formulaires (chacun sur un onglet) qui se mettent à jour toutes les minutes.
Afin d'améliorer les performances, je ne mets à jour que le sous-formulaire de l'onglet activé. Cela marche bien.
Par contre, toujours pour améliorer les performances, j'ai pensé, lors de la création d'un nouvel enregistrement de cacher le formulaire de surveillance plutôt que de le fermer et de le rouvrir à chaque fois.
Et là ça coince, dès que le formulaire de surveillance est caché, je reçois d'access le message "La commande ou l'action " Actualiser" n'est pas disponible maintenant".
On Click du bouton pour ouveerture du formulaire de saisie
Onclose du formulaire de saisie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private Sub Befehl241_Click() Dim strForm As String strForm = "frmKOOBPEDetail" DoCmd.OpenForm strForm, , , , acFormAdd, , "OPN" DoEvents Call closeForm End Sub
Routine Reopform
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Form_Close() Call ReopenForm End Sub
Routine CloseForm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 'rétablit les filtres et les titres des formulaires selon l'enregistrement fait lors de la routine closeform Public Function ReopenForm() 'rétablit les filtres et les titres des formulaires selon l'enregistrement fait lors de la routine closeform Dim strRegister As String Dim frm As Form strRegister = gstrRegister If gstrForm <> "" Then 'réouvre le formulaire Alerter_Hidden au cas où DoCmd.OpenForm "frmAlerter_Hidden", , , , , acHidden Set frm = Forms(gstrForm) frm.Visible = True Else 'si la variable gstrform a été réinitialisée, l'utilisateur retombe sur le masque principal DoCmd.OpenForm "Arbeitsplatz" End If gStopRefresh = False End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Public Function closeForm() 'enregistre les titres des formulaires et les filtres actifs, ces données sont réutilisées par la routine reopenform Dim frm As Form gStopRefresh = True If gstrForm <> "" Then Set frm = Forms(gstrForm) frm.Form.Refresh gstrViewUebergabe = frm.sfrmKooBPEDetailNLE.Form.RecordSource 'si c'est un modèle, on retourne sur la vue standard If frm.frmAGSToolListe.Form.RecordSource = "QryAGSVorlage" Then gstrViewAGS = "QryAGSAktiv" gStrTitelAGS = "AgS - aktuelle Meldungen (Rolle AGS = Tel 25 08 70)" glngColor = RGB(247, 157, 83) 'sinon on enregistre la vue actuelle Else glngColor = frm.frmAGSToolListe.Form.Head.BackColor gstrViewAGS = frm.frmAGSToolListe.Form.RecordSource gStrTitelAGS = frm.frmAGSToolListe.Form.lblTitel.Caption End If gstrViewGV = frm.frmGVToolListe.Form.RecordSource gStrTitelGV = frm.frmGVToolListe.Form.lblTitel.Caption Select Case gstrRegister Case "0" glngCurrentRecord = frm![sfrmKooBPEDetailNLE].Form.CurrentRecord Case "1" glngCurrentRecord = frm![frmAGSToolListe].Form.CurrentRecord Case "2" glngCurrentRecord = frm![frmGVToolListe].Form.CurrentRecord End Select Forms(gstrForm).Visible = False End If End Function
Evenement OnTimer du formulaire de surveillance
Routine RefreshForm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub Form_Timer() On Error GoTo Err_Aktualisieren_Click If Me.Visible = True Then Call refreshForm(Me) 'si le nom du formulaire est Schitleitung und Netzleitung, la mise à jour se déclenche End If Exit_Aktualisieren_Click: Exit Sub Err_Aktualisieren_Click: MsgBox Err.Description Resume Exit_Aktualisieren_Click End Sub
Cela fait plusieurs heures que je cherche comment empêcher la mise à jour du formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
38
39
40
41
42
43
44
45
46
47
48
49 Public Function refreshForm(frm As Form) On Error GoTo refreshForm_Error DoEvents If frm.CurrentView = 0 Or frm.CurrentView = 7 Then ' Exit Function 'si le formulaire est en design (0) ou page (7), ne s'exécute pas Else 'Debug.Print frm.CurrentView End If If Time > #12:01:00 AM# And Time < #12:10:00 AM# Then Call fStartAnwendung End If Forms("frmAlerter_Hidden").TimeFN.Refresh Forms("frmAlerter_Hidden").TimeNLE.Refresh 'ne rafraîchit que la vue active Select Case gstrRegister Case "0" frm![sfrmKooBPEDetailNLE].Form.Refresh Case "1" frm![frmAGSToolListe].Form.Refresh Case "2" frm![frmGVToolListe].Form.Refresh Case "3" Case "4" Case "" Case Else frm![sfrmKooBPEDetailNLE].Form.Refresh frm![frmAGSToolListe].Form.Refresh frm![frmGVToolListe].Form.Refresh End Select On Error GoTo 0 Exit Function refreshForm_Error: MsgBox "Fehler Nummer: " & Err.Number & vbCrLf & "Fehlerbeschreibung: " & Err.Description _ & vbCrLf & vbCrLf & _ "Module Navigation, refreshForm()" _ & vbCrLf & vbCrLf & _ "Bitte Fehlermeldung als Printscreen an red@sbb.ch senden.", 16, "Unbekannter Fehler" End Function
J'ai essayé de jouer sur le time interval
D'utiliser une variable globale boolean et de jouer avec
etc..
J'y perds mon latin
Partager