IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Refresh non disponible sur on Timer


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 23
    Points : 26
    Points
    26
    Par défaut Refresh non disponible sur on Timer
    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
    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
    Onclose du formulaire de saisie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Close()
    Call ReopenForm
     
    End Sub
    Routine Reopform
    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
    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
    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
    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
    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
    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
    Cela fait plusieurs heures que je cherche comment empêcher la mise à jour du formulaire
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonsoir,

    Pour moi si tu as ce message d'erreur :

    La commande ou l'action " Actualiser" n'est pas disponible maintenant.
    Cela ne vient pas du fait que le formulaire d'alertes soit masqué, mais plutôt du fait que tu crées un enregistrement en même temps que tu actualises un sous-formulaire contenant la même source de données.

    Une solution serait de récupérer l'erreur générée et ne rien faire de spécial dans ce cas (ne rien afficher) avec par exemple une simple sortie de la routine

    Cdlt,

    Denis
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/06/2015, 09h20
  2. Réponses: 2
    Dernier message: 30/09/2014, 08h59
  3. Wifi et Bluetooth non disponible sur Macbook pro
    Par jbidou88 dans le forum Mac OS X
    Réponses: 3
    Dernier message: 20/03/2013, 09h26
  4. Application non disponible sur Android 2.1
    Par Ghunter59 dans le forum Android
    Réponses: 7
    Dernier message: 28/07/2010, 16h00
  5. Menus : fonction "tri" non disponible sur un autre PC
    Par niavlys77 dans le forum Access
    Réponses: 1
    Dernier message: 02/05/2006, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo