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 :

Formulaire apparaissant a MINUIT


Sujet :

Access

  1. #1
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut Formulaire apparaissant a MINUIT
    L'application est ouverte quasi 24h/24... a minuit un message doit apparaitre demandant a l'utilisateur de "Copier et compacter la base de données", il fait seulement cliquer sur le lien et cela se fait automatique.

    Comment procéderiez-vous pour faire apparaitre le form? Car j'ai déjà quelque chose en place, mais il s'affiche une fois sur deux (bizarre)

    J'peux vous donner le code que j'ai en place...

    Sur le load du premier formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'Ouverture du formulaire caché pour msg backup
    DoCmd.OpenForm "frmMinuterie"
    Form_frmMinuterie.Visible = False
    Une méthode du premier formulaire apparentée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Form_Timer()
     
    If Time() = "00:00:01" Then
            MsgBox "Ne pas oublier de faire le backup!", vbExclamation
    End If
     
    End Sub
    Le form "frmMinuterie" :
    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
     
    Option Compare Database
    Option Explicit
     
     
    Private Sub Form_Load()
    Me.Visible = False
    End Sub
     
    Private Sub Form_Timer()
    Dim varHeureExec As Variant
    Dim varDerniereExec As Variant
     
    If CurrentUser = "maintena1" Then
            ' Lire l'heure d'exécution
            varHeureExec = DLookup("[Heure Exécution]", "tbl Minuterie")
            If IsNull(varHeureExec) Then Exit Sub
     
            ' Lire l'heure de dernière exécution
            varDerniereExec = DLookup("[Dernière Exécution]", "tbl Minuterie")
            If IsNull(varDerniereExec) Then varDerniereExec = #1/1/1900 12:00:00 PM#
     
            ' Si une exécution a eu lieu aujourd'hui, annuler le processus
            If Format(varDerniereExec, "dd/mm/yyyy") = Format(Date, "dd/mm/yyyy") Then Exit Sub
     
            ' Si l'heure actuelle est supérieure à celle de base, exécuter le processus
            If Time > varHeureExec Then
                ' Mettre à jour la date d'exécution
                CurrentDb.Execute "UPDATE [tbl Minuterie] SET [Dernière exécution]=#" & _
                    Format(Now, "mm/dd/yyyy hh:nn:ss") & "#"
     
                ' Exécuter une action...
                DoCmd.OpenForm "frmCopyCompact"
            End If
    End If
    End Sub
    Et le form qui copie et compacte :
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    Option Compare Database
    Option Explicit
     
    Private Sub btCopieCompact_Click()
     
    Dim pass As String
     
    If trouveGroupe(CurrentUser) = "Maintenance" Then
     
            pass = InputBox("Veuillez entrer le mot de passe!", "mot de passe")
     
            If Trim(pass) = "sauver" Then
                    copyAndCompact2
            Else
                    MsgBox "Le mot de passe est erroné!", vbCritical
                    DoCmd.Close
            End If
    Else
            copyAndCompact
    End If
     
     
    End Sub
    Function copyAndCompact()
    Dim fichierSysteme As New FileSystemObject
     
    DoCmd.Hourglass True
     
    If fichierSysteme.FileExists("g:\GEG\backup\maintenanceBackup.mdb") = True Then
            fichierSysteme.DeleteFile "g:\GEG\backup\maintenanceBackup.mdb", True
    End If
     
    If fichierSysteme.FileExists("g:\GEG\backup\maintenance.mdb") = True Then
            fichierSysteme.DeleteFile "g:\GEG\backup\maintenance.mdb", True
    End If
     
    fichierSysteme.CopyFile "g:\GEG\maintenance.mdb", "g:\GEG\backup\maintenance.mdb", True
     
    If fichierSysteme.FileExists("C:\Program Files\Microsoft Office\Office\MSAccess.exe") Then
            Shell "C:\Program Files\Microsoft Office\Office\MSAccess.exe G:\GEG\backup\maintenance /COMPACT"
     
    Else
            If fichierSysteme.FileExists("N:\MSOFFICE\OFFICE\MSACCESS.EXE") Then
                    Shell "N:\MSOFFICE\OFFICE\MSACCESS.EXE G:\GEG\backup\maintenance /COMPACT"
     
            Else
                    MsgBox "Le compactage a échoué car vous n'avez pas Access d'installé!", vbCritical
            End If
    End If
     
    DoCmd.Hourglass False
     
     
    DoCmd.Close
    End Function
    Function copyAndCompact2()
    Dim fichierSysteme As New FileSystemObject
     
    DoCmd.Hourglass True
     
    If fichierSysteme.FileExists("g:\GEG\backup\maintenanceBackup.mdb") = True Then
            fichierSysteme.DeleteFile "g:\GEG\backup\maintenanceBackup.mdb", True
    End If
     
    If fichierSysteme.FileExists("g:\GEG\backup\maintenance.mdb") = True Then
            fichierSysteme.DeleteFile "g:\GEG\backup\maintenance.mdb", True
    End If
     
    fichierSysteme.CopyFile "g:\GEG\maintenance.mdb", "g:\GEG\backup\maintenance.mdb", True
     
    DBEngine.CompactDatabase "g:\GEG\backup\maintenance.mdb", "g:\GEG\backup\maintenanceBackup.mdb"
     
     
    If fichierSysteme.FileExists("g:\GEG\backup\maintenance.mdb") = True Then
            fichierSysteme.DeleteFile "g:\GEG\backup\maintenance.mdb", True
    End If
    DoCmd.Hourglass False
    DoCmd.Close
    MsgBox "La copie et le compactage de GEG est réussi avec succès!"
    End Function
    Charles Bergeron - Webmaster/Infographe/Photographe

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    C'est normal qu'il n'apparaisse pas tout le temps.

    Tu testes une heure précise mais le déclenchement est conditionné par une minuterie qui peut ne pas se déclencher à cette heure précise.

    Je te suggère plutôt de faire un test moins précis (sans les secondes) mais avec une condition permettant (test d'un tag) de savoir si la base a été compactée ce jour.

    Ceci resoudra ton problème.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    excuse moi, je ne comprends pas completement, pourrais-tu etre plus précis dans tes explications svp???
    Charles Bergeron - Webmaster/Infographe/Photographe

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Même si la minuterie est réglé sur 1 seconde ou 1/2 seconde, lors du test l'heure de test (00:00:01) n'est peux être pas encore atteinte (différence de qqs milisecondes) lors du test suivant l'heure peut être dépassée (de qqs milisecondes) se qui fait que tu peux tomber 1 fois sur 2 sur une non exécution.

    Le mieux est de créer une table temporaire contenant un tag (date et heure du compactage), ce tag est activé si la base est compacté le jour courant.

    Il ne reste plus qu'a faire le test le jour suivant pour savoir si le jour du compactage est le jour courant.

    Ayant eu à faire ce genre de process, j'ai procédé autrement :

    - j'ai créé un raccourci de compactage (voir mon tuto sur les raccourci)
    - j'ai utilisé l'utilitaire système tâches plannifiées.
    - Dans mon application j'au mis en place une procédure de fermeture (docmd.quit) dans une plage précise de 15mn.
    - Dans Taches planifiées
    - il y avait le compactage (l'applicatif est fermé)
    - la sauvegarde (une simple copie vers un serveur sauvegardé quotidiennement)
    - la réouverture de l'applicatif.

    Je n'ai jamais eu de problème en 3 ans d'exploitation (je pense que depuis 5 ans ils n'en ont toujours pas eu)
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    merci, je vais regarder ce que tu me dis... si j'ai d'autre prob, jte contacte en MP
    Charles Bergeron - Webmaster/Infographe/Photographe

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/12/2009, 14h46
  2. [AC-2007] image dans formulaire qui n'apparaissent pas !
    Par pascalito dans le forum VBA Access
    Réponses: 11
    Dernier message: 22/10/2009, 16h15
  3. Réponses: 1
    Dernier message: 26/01/2009, 09h08
  4. Réponses: 2
    Dernier message: 07/12/2007, 11h01
  5. Curseur n'apparaissant pas dans champs text de formulaire
    Par lysandre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/09/2007, 10h47

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