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 :

Access 97: La fenètre ne se quitte pas, il faut utiliser le gestionnaire de taches


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut Access 97: La fenètre ne se quitte pas, il faut utiliser le gestionnaire de taches
    Bonjour,

    J'ai un problème sur Access 97 qui m'énerve.
    J'ai fait une petite appli avec pas mal de formulaires, tout fonctionnait bien jusqu'aux tests finaux: dans certains cas, la fenêtre access ne se ferme pas une fois la base fermée.
    Je joue dans la base, je clique sur la croix tout en haut à droite (quitter access quoi), la base se ferme, mais pas la fenetre qui doit être tuée par le gestionnaire de taches windows...

    Après 3 heures de tests, le code mis en cause est celui-ci:
    Si il y a appel à genereNote, le problème survient.

    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
    Dans le formulaire
    Private Sub genereNote()
        noteIncident Me.Form
    End Sub
     
    Dans un module
    Public Sub noteIncident(ByRef formulaire As Form)
        Dim Note As Variant
        Dim Priorite As Variant
     
        Note = calculNoteIncident(formulaire)
        If IsNull(Note) Then Exit Sub
     
        Priorite = calculPriorisationIncident(formulaire, CInt(Note))
        If IsNull(Priorite) Then Exit Sub
     
        formulaire!Text_Note = Note
        formulaire!List_Priorite = Priorite
    End Sub
     
    Public Function calculNoteIncident(ByRef entree As Object) As Variant
        Dim Note As Integer
        Note = 0
     
        'si prodoc, ne pas calculer de note
        If entree!Cellule = "PRODOC" Then
            calculNoteIncident = Null
            Exit Function
        End If
     
        If entree!Abo_PP = "Abo" Then
            If entree!Obligation Then Note = Note + 2
            If entree!Satisfaction Then Note = Note + 2
            If entree!Rattrapable Then Note = Note + 2
            If entree!SensibiliteCciale Then Note = Note + 2
        ElseIf entree!Abo_PP = "PP" Then
            If entree!Obligation Then Note = Note + 2
            If entree!Satisfaction Then Note = Note + 2
            If entree!Rattrapable Then Note = Note + 2
            If entree!CompteIN Then Note = Note + 9
        End If
     
        calculNoteIncident = Note
     
    End Function
     
    Public Function calculPriorisationIncident(ByRef entree As Object, ByVal Note As Integer) As String
        If Note > 7 Then
            calculPriorisationIncident = "MAJEUR"
        ElseIf Note > 3 Then
            calculPriorisationIncident = "GENANT"
        Else
            calculPriorisationIncident = "MINEUR"
        End If
    End Function
    Le code est loin d'être difficile mais c'est lui qui cause le problème, sans bien sûr générer d'erreur.
    Le problème ne survient pas avec access 2003 mais les utilisateurs veulent 97

    Si vous demandez pourquoi j'ai "ByRef entree As Object" c'est parce que la fonction peut être utilisée avec un formulaire ou un recordset.

    Quelqu'un a-t-il une idée?

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Je ne sais pas t'aider, mais juste une remarque :
    l'utilité du paramètre 'entrée' dans la fonction calculPriorisationIncident n'est pas évident!

    Bon courage,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    Bon apparemment c'est corrigé:
    Access 97 n'aime pas le cast d'une variable Form en Object.

    En remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Note = calculNoteIncident(formulaire)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Note = calculNoteIncident(formulaire.RecordsetClone)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function calculNoteIncident(entree As Object) As Variant
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function calculNoteIncident(entree As Recordset) As Variant
    (de même pour la priorité)

    le problème ne survient plus.
    je trouve ça quand même bizarre...
    Surtout que j'utilise ce même mécanisme ailleurs et il n'a pas l'air de déconner.
    Je vais pouvoir faire plein de nouveaux tests pour m'en assurer.

    Merci

    P.S. je laisse ce post ouvert une journée si quelqu'un a une explication.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 41
    Points : 40
    Points
    40
    Par défaut
    pgz

    Le module dans lequel se trouve ces fonctions peut être remis à jour automatiquement par la base lors de son ouveture au cas où un admin voudrait changer les rêgles de calcul. Il n'a pas besoin de toucher au code de l'appli. C'est pour ça qu'il existe, même s'il n'est pas utilisé avec la rêgle actuelle.

Discussions similaires

  1. fenêtre ne s'initialise pas
    Par the_youpi dans le forum WinDev
    Réponses: 10
    Dernier message: 04/12/2007, 13h49
  2. Savoir si une fenêtre est ouverte ou pas
    Par zizoux5 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2007, 18h26
  3. [VBA Access] Fermer une fenêtre style popup
    Par slevtec007 dans le forum VBA Access
    Réponses: 0
    Dernier message: 15/08/2007, 17h01
  4. [VB5] base de donnée access même si le PC n'a pas access
    Par Silivrion dans le forum VBA Access
    Réponses: 14
    Dernier message: 06/04/2006, 08h54
  5. Ma fenêtre OpenGL ne veut pas rester ouverte
    Par Mynautor dans le forum OpenGL
    Réponses: 3
    Dernier message: 03/02/2005, 13h25

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