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 :

fermer une base si pas d'activite


Sujet :

Access

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Salut,

    Je t'ai un peu abandonné, mais me revoila.

    Une première chose m'inquiète:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le probleme aussi c'est que le compteur se recharge que si je tourne la roulette de la souris
    Et ça c'est pas normal !

    En fait, et contrairement à ce qu'on t'a dit, l'intervalle est en millisecondes. Comme on a mis 1000 (ça fait 1 seconde !!!) Comme on boucle 5 fois avant de fermer, ça ferme après 5 secondes !!!

    ce qui explique que tu dois passer to temps avec ta roulette...

    Rectifions et mets 60000 dans ton timer. Un tic de timer vaut donc maintenant 1 minute. (je l'ai testé).

    Si plutôt que de mettre gInactive = 5 tu mets gInactive = 15, tu seras donc à 15 minutes.

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    J'espère donc que c'était le mauvais réglage du timer qui te faisait croire que ton compteur ne se rechargait pas.

    Pour ce qui est du message on va régler ça.

    Tu es d'accord de dire que le message dois s'afficher si l'utilisateur quitte lui-même le formulaire et sinon il ne doit pas.

    transformes ton code comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Form_Unload(Cancel As Integer) 
    if gInactive >0 then
    If MsgBox("ETES-VOUS CERTAIN DE FERMER CETTE PAGE ?", vbYesNo) = vbNo Then Cancel = True 
    end if
    End Sub
    Si c'est une fermeture de l'utilisateur, gInactive sera plus grand que 0
    Si c'est une fermeture automatique, gInactive sera égal à zéro et ton message ne sera pas envoyé.


    Bonne chance

  3. #23
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Golzinne
    J'espère donc que c'était le mauvais réglage du timer qui te faisait croire que ton compteur ne se rechargait pas.

    Pour ce qui est du message on va régler ça.

    Tu es d'accord de dire que le message dois s'afficher si l'utilisateur quitte lui-même le formulaire et sinon il ne doit pas.

    transformes ton code comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Form_Unload(Cancel As Integer) 
    if gInactive >0 then
    If MsgBox("ETES-VOUS CERTAIN DE FERMER CETTE PAGE ?", vbYesNo) = vbNo Then Cancel = True 
    end if
    End Sub
    Si c'est une fermeture de l'utilisateur, gInactive sera plus grand que 0
    Si c'est une fermeture automatique, gInactive sera égal à zéro et ton message ne sera pas envoyé.


    Bonne chance
    bonjour,
    super je viens de modifier le code et maintenant le message n'apparait plus si ca coupe apres le timer.
    le seul probleme qui persiste c'est le type de detection pour creer l'activite. ca ne semble marcher qu'avec le roulement de la souris.
    Sur quel evenemnt penses tu que je doive mettre le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gInactive = 15 ' qui réinitialize ta période de 5 minutes

  4. #24
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Points : 30
    Points
    30
    Par défaut
    Si tu es toujours la rajoute sa avec l'autre.

    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
    Sub InactivitéDépassée(MinutesExpiration)
        Dim Objao As AccessObject
        On Error Resume Next
        For Each Objao In CurrentProject.AllForms
            Select Case Objao.Name
                Case Me.Name
                Case Else
                    If Objao.IsLoaded Then DoCmd.Close acForm, Objao.Name, acSaveYes
                End Select
        Next Objao
        For Each Objao In CurrentProject.AllReports
            If Objao.IsLoaded Then DoCmd.Close acReport, Objao.Name, acSaveYes
        Next Objao
        Quit
    End Sub

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 100
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par JimmyB
    Si tu es toujours la rajoute sa avec l'autre.

    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
    Sub InactivitéDépassée(MinutesExpiration)
        Dim Objao As AccessObject
        On Error Resume Next
        For Each Objao In CurrentProject.AllForms
            Select Case Objao.Name
                Case Me.Name
                Case Else
                    If Objao.IsLoaded Then DoCmd.Close acForm, Objao.Name, acSaveYes
                End Select
        Next Objao
        For Each Objao In CurrentProject.AllReports
            If Objao.IsLoaded Then DoCmd.Close acReport, Objao.Name, acSaveYes
        Next Objao
        Quit
    End Sub
    bonjour,
    tu proposes de rajouter ton code avec l'autre mais je ne comprends pas bien de quel autre

  6. #26
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Points : 30
    Points
    30
    Par défaut
    Mets tout sa sur ton formulaire d'accueil

    Le premier va dans sur minuterie

    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
    Private Sub Form_Timer()
    Me!txtHorloge = Time
        On Error Resume Next
        Const TempsInactivité = 15  ' temps maximum sans activité en minutes
        Static ControlePrécédent As String
        Static FormulairePrécédent As String
        Static TempsExpiration
        Dim FormulaireActif As String
        Dim ControleActif As String
        Dim MinutesExpiration
     
        FormulaireActif = Screen.ActiveForm.Name
        If err Then
           FormulaireActif = "Pas de formulaire actif"
           err = 0
        End If
        ControleActif = Screen.ActiveControl.Name
           If err Then
           ControleActif = "Pas de controle actif"
           err = 0
        End If
        If (ControlePrécédent = "") Or (FormulairePrécédent = "") _
          Or (FormulaireActif <> FormulairePrécédent) _
          Or (ControleActif <> ControlePrécédent) Then
           ControlePrécédent = ControleActif
           FormulairePrécédent = FormulaireActif
           TempsExpiration = 0
        Else
           TempsExpiration = TempsExpiration + Me.TimerInterval
        End If
     
        MinutesExpiration = (TempsExpiration / 1000) / 60
        If MinutesExpiration >= TempsInactivité Then
           TempsExpiration = 0
           InactivitéDépassée MinutesExpiration
        End If
    End Sub
    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
    Sub InactivitéDépassée(MinutesExpiration)
        Dim Objao As AccessObject
        On Error Resume Next
        For Each Objao In CurrentProject.AllForms
            Select Case Objao.Name
                Case Me.Name
                Case Else
                    If Objao.IsLoaded Then DoCmd.Close acForm, Objao.Name, acSaveYes
                End Select
        Next Objao
        For Each Objao In CurrentProject.AllReports
            If Objao.IsLoaded Then DoCmd.Close acReport, Objao.Name, acSaveYes
        Next Objao
        Quit
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/04/2008, 15h14
  2. Update d'une base MySql, pas de résultat, pas d'erreur
    Par EdwinAlan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/11/2007, 15h50
  3. Réponses: 4
    Dernier message: 20/09/2007, 14h08
  4. Enregistrement fichier excel dans une base mysql (pas csv)
    Par morph12345 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 27/03/2006, 10h01
  5. Impossible de fermer une base de données en lecture
    Par requiemforadream dans le forum ASP
    Réponses: 7
    Dernier message: 21/04/2005, 16h58

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