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 :

Erreur 2447 : "Utilisation de (.) , (!) ou Parenthèse incorrect" [AC-2010]


Sujet :

Access

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut Erreur 2447 : "Utilisation de (.) , (!) ou Parenthèse incorrect"
    Bonjour ,

    Je suis confronter à un souci dans mon déploiement de RunTime AC10.

    Le programme marche correctement sur mon poste développement , mais quand je passe sur machine virtuel (XP SP3 , Framework 3.5) l'application me lance un message d'erreur après que j'ai rentrée le login et le MDP...

    Erreur 2447 : "Utilisation de (.) , (!) , ou de parenthèse incorrect"

    Grace a la gestion d'erreur sur mon application , j'ai regarder dans ma table de Log_erreur d'où cela pouvais venir...

    Verdict cela viens de F_SUIVI > majsuivi()

    Donc j'aimerais savoir si je passe à coté d'une étourderie dans ma programmation et surtout dans mon utilisation de mes (.) et (!) ...


    Je vous joint donc le morceau de code mis en cause :

    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
    Public Sub MajSuivi()
    On Error GoTo GestionErreur
     
    'Procedure de mise à jour du formulaire
    If Me.btnQuartJournee.Value = True Then
    Me.btnQuartJournee.ControlTipText = "Affichage - Par Quart"
    Me.lstEquipe.enabled = False
    Me.lstEquipe.Requery
    Me.lstEquipe.Selected(Me.lstEquipe.ListCount - 1) = False
    Me.txtIDQuart = "*"
    Me.txtEquipe = "*"
    Else
    Me.btnQuartJournee.ControlTipText = "Affichage - Journée Complète"
    Me.lstEquipe.enabled = True
    Me.lstEquipe.Requery
    Me.lstEquipe.Selected(Me.lstEquipe.ListCount - 1) = True
    Me.txtIDQuart = Me.lstEquipe.ItemData(Me.lstEquipe.ListCount - 1)
    Me.txtEquipe = Me.lstEquipe.Column(1)
    End If
     
    If Me.lstEquipe.ListCount = 0 Then
     Me![txtDateSuivi] = Me![txtDateSuivi] - 1
     Me.lstEquipe.Requery
     'MsgBox "Aucun événement le " & Me![txtDateSuivi] + 1 & ".", vbInformation, "Suivi Quotidien"
     Me.lstEquipe.Selected(Me.lstEquipe.ListCount - 1) = True
     Me.txtIDQuart = Me.lstEquipe.ItemData(Me.lstEquipe.ListCount - 1)
     Me.txtEquipe = Me.lstEquipe.Column(1)
    End If
     ' Changement de la source du sous Formulaire. Permet de faire un requery du sf1 + affichage à la premiere ligne.
     Me.sfrm_SUIVI_sf1.SourceObject = "F_FOND"
     Me.sfrm_SUIVI_sf1.SourceObject = "F_SUIVI_sf1"
     Me.sfrm_SUIVI_sf2.Requery
     
    GoTo Fin
    GestionErreur:
      Select Case err.Number
        Case Else: EnregistrerErreur err.Source, err.Number, err.Description, Me.Name, "Procedure Public MajSuivi()"
      End Select
    Fin:
    End Sub
    *CF :
    - Le code Compile
    - L'application marche sur mon poste
    - Toute les références sont bien rentrées.



    Vous remerciant pour le temps de lecteur et d'analyse lexical de mon code.

    * De plus si vous pouviez m'expliquer votre vision et conception entre le (.) et le (!) ... Le (!) pour moi visant le Contenant , et le (.) le contenue... *


    Cordialement ,

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    Citation Envoyé par MisterS Voir le message
    * De plus si vous pouviez m'expliquer votre vision et conception entre le (.) et le (!) ... Le (!) pour moi visant le Contenant , et le (.) le contenue... *
    Pour moi, l'opérateur d'identification ! n'est qu'une commodité d'écriture pour accéder à un membre d'une collection.

    Il en existe déjà une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    application.References.Item("Access").guid
    ' peut s'écrire
    application.References("Access").guid
    Avec le ! ça en fais une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    application.References.Item("Access").guid
    ' peut s'écrire
    application.References!Access.guid
    La syntaxe serait donc :
    Pour pouvoir utiliser l'opérateur d'identification ! il y a une condition.
    Il faut que le membre (au sens propriété ou méthode) par défaut de la collection soit celui qui retourne un membre (élément) de la collection.
    Dans mon exemple il s'agit de Item.

    Par contre, à droite de l'opérateur d'identification point (.), on ne peut pas avoir la clé d'un membre d'une collection.

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Bonjour ,

    Déjà merci LedZeppII pour ta réaction sur cette forme d'écriture.

    Ensuite concernant mon problème je n'arrive toujours pas a déceler mon problème !! Il ne se produit pas sur le Access en mode Complet...(vous me direz peu être que c'est normal..)

    Mais je ne vois plus la , je commence a tournée en rond autour du problème...

    J'ai remplacer tout les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me![txtDateSuivi] , par des Me.txtDateSuivi
    ... mais cela n'as rien changer !

    Ensuite j'ai changer mes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lstEquipe.Selected Par : Me![lstEquipe].Selected
    Et tout ceux y ressemblant...

    Mais a l'heure actuel je n'ai plus d'avancement :S ! Je me sent quelques peu impuissant face à cela ! (Même si la gestion d'erreur me pointe l'endroit précis du problème ... je me retrouve face à une chose que je n'arrive pas a débugger , c'est assez frustrant .. )

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    Personnellement je privilégie l'usage du point (.) dans VB.
    Et le point-virgule (;) dans les expressions SQL ou les expressions dans des contrôles.

    Ton problème, bien qu'ayant lieu dans majsuiv(), peut se situer ailleurs.
    Je pense à ce groupe de lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     ' Changement de la source du sous Formulaire. Permet de faire un requery du sf1 + affichage à la premiere ligne.
     Me.sfrm_SUIVI_sf1.SourceObject = "F_FOND"
     Me.sfrm_SUIVI_sf1.SourceObject = "F_SUIVI_sf1"
     Me.sfrm_SUIVI_sf2.Requery
    Cela peut venir d'un des deux sous-formulaires.

    Mets ces trois lignes en commentaire pour voir si le problème disparait.
    S'il disparait, "décommente" les lignes une à une, en faisant un essai à chaque fois.
    Tu devrai tomber sur la ligne qui génère l'erreur.

    Ton problème n'est surement pas évident, car la différence se situe au niveau de l'environnement dans lequel s'exécute ton appli.

    Sinon, une méthode "bestiale" pour récupérer la ligne en cause :
    Code vba : 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
    Public Sub MajSuivi()
    Dim Li as long
    On Error GoTo GestionErreur
     
    'Procedure de mise à jour du formulaire
    Li=Li+1 '1
    If Me.btnQuartJournee.Value = True Then
    Li=Li+1 '2
    Me.btnQuartJournee.ControlTipText = "Affichage - Par Quart"
    Li=Li+1 '3
    Me.lstEquipe.enabled = False
    Li=Li+1 '4 
    Me.lstEquipe.Requery
    Li=Li+1 '5
    Me.lstEquipe.Selected(Me.lstEquipe.ListCount - 1) = False
    Li=Li+1 '6
    Me.txtIDQuart = "*"
    Li=Li+1 '7
    Me.txtEquipe = "*"
    Else
    Li=Li+1 '8
    Me.btnQuartJournee.ControlTipText = "Affichage - Journée Complète"
    Li=Li+1 '9
    Me.lstEquipe.enabled = True
    Li=Li+1 '10
    Me.lstEquipe.Requery
    Li=Li+1 '11
    Me.lstEquipe.Selected(Me.lstEquipe.ListCount - 1) = True
    Li=Li+1 '12
    Me.txtIDQuart = Me.lstEquipe.ItemData(Me.lstEquipe.ListCount - 1)
    Li=Li+1 '13
    Me.txtEquipe = Me.lstEquipe.Column(1)
    End If
     
    Li=Li+1 '14 
    If Me.lstEquipe.ListCount = 0 Then
     Li=Li+1 '15
     Me![txtDateSuivi] = Me![txtDateSuivi] - 1
     Li=Li+1 '16
     Me.lstEquipe.Requery
     'MsgBox "Aucun événement le " & Me![txtDateSuivi] + 1 & ".", vbInformation, "Suivi Quotidien"
     Li=Li+1 '17
     Me.lstEquipe.Selected(Me.lstEquipe.ListCount - 1) = True
     Li=Li+1 '18
     Me.txtIDQuart = Me.lstEquipe.ItemData(Me.lstEquipe.ListCount - 1)
     Li=Li+1 '19
     Me.txtEquipe = Me.lstEquipe.Column(1)
    End If
     ' Changement de la source du sous Formulaire. Permet de faire un requery du sf1 + affichage à la premiere ligne.
     Li=Li+1 '20
     Me.sfrm_SUIVI_sf1.SourceObject = "F_FOND"
     Li=Li+1 '21
     Me.sfrm_SUIVI_sf1.SourceObject = "F_SUIVI_sf1"
     Li=Li+1 '22
     Me.sfrm_SUIVI_sf2.Requery
     
    GoTo Fin
    GestionErreur:
      Select Case err.Number
        Case Else: EnregistrerErreur err.Source, err.Number, err.Description, Me.Name, "Procedure Public MajSuivi() Li:" & Li
      End Select
    Fin:
    End Sub

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Bonjour et merci ,

    Grâce à ta technique Spartiate , il en est ressorti que cela viens de ma ligne 9

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Li = Li + 1 '9
    Me.lstEquipe.enabled = True
    Donc , lstEquipe existe bien , c'est une Zone de Liste indépendante avec pour action OnClick() :
    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
    Private Sub lstEquipe_Click()
    On Error GoTo GestionErreur
     
    'Mise à jour du suivi sur selection Equipe
    Me.txtIDQuart = Me.lstEquipe
    Me.txtEquipe = Me.lstEquipe.Column(1)
     
    ' Changement de la source du sous Formulaire. Permet de faire un requery du sf1 + affichage à la premiere ligne.
     Me.sfrm_SUIVI_sf1.SourceObject = "F_FOND"
     Me.sfrm_SUIVI_sf1.SourceObject = "F_SUIVI_sf1"
     
    GoTo Fin
    GestionErreur:
      Select Case err.Number
        Case Else: EnregistrerErreur err.Source, err.Number, err.Description, Me.Name, "lstEquipe_Click()"
      End Select
    Fin:
    End Sub
    Je ne comprend pas bien ce qui peu ce passée , pour info une référence au chargement , juste avant l'erreur ce fait Elle s'appelle :
    vsavb7.olb
    Mais je ne trouve pas beaucoup d'information concernant celle-ci ! (de plus le regsvr32 ne marche pas sur les olb...)
    Ce qui correspond bien au Microsoft Visual Basic que j'utilise :
    VBA Retail 7.0.1590
    Et ce trouvant sur mon poste Dev dans :

    C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
    et
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
    J'ai trouver cette information concernant le vsavb7 .... mais qui ne m'éclaire pas plus ...
    http://support.microsoft.com/kb/974292/fr

    Cordialement ,

    Je continue mes test et je fait les feedbacks de mes avancements.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Points : 492
    Points
    492
    Par défaut
    Alors ,
    Très bien , Problème résolu , je te remercie pour m'avoir fait prendre un recul sur mon code et sur le déroulement globale !!!

    L'explication Microsoft ma fait faire un Flash concernant la solution.

    Donc voici :

    Ma référence était : VSAVB7.1 ==> Donc Framework SP1
    Après vérification sur la machine client , elle ne comporte pas tout les fichier SP1 ! Étant installer en SP3 directement , elle prenais le minimum du SP1 , et une bonne partie du SP2...

    J'ai donc changer mon VSAVB7.1 en prenant le VSAVB8 (celui du SP2...)

    Et donc actuellement tout marche correctement ! Ce n'était qu'un problème basique de référence... (Shame on me .. )

    Cordialement à tous ,

    Problème RÉSOLU .

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

Discussions similaires

  1. [VB6] erreur de compilation:utilisation incorrecte du mot clé New
    Par fouf_01 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 17/05/2006, 16h22
  2. Message d'erreur lors d'utilisation d'un Objet
    Par dirty_boy dans le forum Langage
    Réponses: 3
    Dernier message: 28/10/2005, 16h16
  3. erreur lorsque j'utilise le module session
    Par vbcasimir dans le forum Modules
    Réponses: 13
    Dernier message: 14/10/2005, 13h41
  4. Retour d'erreur avec l'utilisation de la commande For en VBS
    Par genialk2000 dans le forum VBScript
    Réponses: 3
    Dernier message: 30/03/2005, 18h45
  5. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 21h39

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