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 :

Variables globales qui perdent leur valeurs


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Août 2003
    Messages : 20
    Points : 21
    Points
    21
    Par défaut Variables globales qui perdent leur valeurs
    Bonjour à Tous!

    Voici le contexte:
    Nous avons une app Access 2002 utilisée sur plusieurs postes de travail
    Cette app comprends une fonctionalitée qui permet d'importer des données de fichiers autocad
    Cette fonctionalité n'est utilisé que sur un seul des postes de travail et utilise une référence dont le DLL n'est QUE sur ce poste.

    La référence est donc ajoutée dynamiquement au démarrage de l'application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public bAppStartMode as boolean
    Public sub AppStart()
      On Error Resume Next
      'Try to add a reference to DWG.dll (ver 1.13)
      Access.References.AddFromGuid GUID_REF_DWG, 1, 13
      If Err.Number <> 0 Then
        Err.Clear
      End If
      bAppStartMode = True
      Call subTest(bAppStartMode)
      MsgBox bAppStartMode 'bAppStartMode est encore à TRUE
    End Sub
    et enlevée à la fermeture de l'application
    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 QuitApp()
      Dim rRef As Access.Reference
     
      On Error Resume Next
      For Each rRef In Access.References
        If rRef.Guid = GUID_REF_DWG Then
          'remove the Reference
          Access.References.Remove rRef
        End If
      Next
     
      'bAppStartMode devrais être resté à TRUE puisqu'elle est globale
      If bAppStartMode Then
        ...
      End If
    End Sub
    Le problème est:
    Dans le cas ou l'ajout de référence fonctionne, la variable globale bAppStartMode (et toutes les autres variables globales) sont ré-iniatialisées du moment ou la procédure AppStart est terminée.

    La valeur bAppStartMode n'est jamais remise à FALSE nulepars dans le code.

    Sur un poste où le référence DWG n'est pas disponible, nous n'avons pas ce problème.

    Si nous plaçons la ligne Access.References.AddFromGuid GUID_REF_DWG, 1, 13 en commentaire, les variables globales ne se ré-initialisent pas...

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    et si tu ajoutes une propriété à la base ?

    http://access.developpez.com/faq/?pa...ModifPropriete

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Août 2003
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    ça pourrais dépanner, mais ça n'explique pas le phénomène que je qualifirait presque de paranormal...

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    Ca l'explique peut-être par le fait que...
    Rajoutant une référence, pour que le programme puisse s'exécuter, il y aura forcément recompilation du code, et donc réinitialisation.

    par exemple...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Août 2003
    Messages : 20
    Points : 21
    Points
    21
    Par défaut
    Pour ceux que ça intéresse, voici comment ça s'est terminé:

    Étant donné que l'ajout d'une référence force la recompilation du code, ça implique que la toute première chose que l'application doit faire, c'est d'ajouter cette référence!

    Nous avons donc créé la macro "Autoexec" qui se lance automatiquement au démarrage de l'application et qui apelle cette nouvelle fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function AddRef()
    On Error Resume Next
      'Try to add a reference to DWG.dll (ver 1.13)
      Access.References.AddFromGuid GUID_REF_DWG, 1, 13
      'If failed
      If Err.Number <> 0 Then
        Err.Clear
      End If
    End Function
    Et nous avons retiré cette ligne de l'autre fonction (AppStart)

    De cette façon, on ajoute la référence avant que toute autre variable globale ne soit initialisée.
    Les variables initialisées par la suite gardent leurs valeurs!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Variables globales initialisées dans Form_Load qui perdent leurs valeurs
    Par mamadouabd dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/01/2010, 23h09
  2. Variable globale qui ne fonctionne pas
    Par the-morpher dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/03/2009, 22h01
  3. Variables qui perdent leur valeur lorsqu'utilisées dans fonction
    Par damlarumeur dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2009, 09h05
  4. Réponses: 15
    Dernier message: 12/08/2008, 12h30
  5. mes textbox serveur perdent leur valeur.
    Par dachir dans le forum ASP.NET
    Réponses: 12
    Dernier message: 12/06/2008, 11h43

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