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

VBA Access Discussion :

Difficulté de créer une table réflexive


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 22
    Points
    22
    Par défaut Difficulté de créer une table réflexive
    Bonjour
    Suite a ma demande d'aide dont voilà le lien https://www.developpez.net/forums/d1646745/logiciels/microsoft-office/access/modelisation/difficulte-creer-table-reflexive/

    Voilà le problème : j'ai réalisé la BDD grâce a votre aide en français , j'ai mis le code ça a marché nickel, mais comme la plupart des dirigeants des association n'ont pas un bon niveau en français, j'ai essayé de convertir en arabe, j'ai changé les légendes et le code ne marche pas. Etrange n'est ce pas. voici le code:
    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
    Option Compare Database
     
    Private Sub GererType()
        Select Case TypeAdherent
            Case "منخرط عادي"
               'On va cacher tous les champs qui concerne les membres et les salariés
               Me.Role.Visible = False
               Me.DteDebutRole.Visible = False
               Me.DteFinRole.Visible = False
               Me.Emploi.Visible = False
               Me.DteDebutContrat.Visible = False
               Me.DteFinContrat.Visible = False
               Me.Salaire.Visible = False
     
           Case "عضو مسير"
               'On va afficher les champs qui concernent les membres et cacher ceux pour les salariés
               Me.Role.Visible = True
               Me.DteDebutRole.Visible = True
               Me.DteFinRole.Visible = True
               Me.Emploi.Visible = False
               Me.DteDebutContrat.Visible = False
               Me.DteFinContrat.Visible = False
               Me.Salaire.Visible = False
           Case "أجير"
               'On va afficher les champs qui concernent les salariés et cacher ceux pour les membres
               Me.Role.Visible = False
               Me.DteDebutRole.Visible = False
               Me.DteFinRole.Visible = False
               Me.Emploi.Visible = True
               Me.DteDebutContrat.Visible = True
               Me.DteFinContrat.Visible = True
               Me.Salaire.Visible = True
     
           Case esle
               Call Err.Raise(5, , Error$(5) & " -Type non géré.") 'Signale qu'on s'est trompé dans la programmation. Ne devrait jamais se produire en production.
     
       End Select
    End Sub
     
    Private Sub Form_Current()
    Call GererType
    End Sub
     
    Private Sub TypeAdherent_AfterUpdate()
    Call GererType
    End Sub

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour à toi,

    J'ignore les significations des libellés avec entités, mais une chose m'interpelle : pourquoi ne pas gérer le type avec une valeur codifiée (0, 1, 2, ...) dont l'affichage seul est localisé ?

    En outre, je doute que la syntaxe "Case esle" soit admise, mais j'avoue que j'ignore si tu as fait un copier-coller de ton code ou une simple erreur de frappe en la recopiant ici.

    Finalement : "Ca ne marche pas", pour moi, ne veut rien dire. Un message d'erreur serait plus pertinent, non ?

    Bien à toi,

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par th.elnikoff Voir le message
    Bonjour à toi,

    J'ignore les significations des libellés avec entités, mais une chose m'interpelle : pourquoi ne pas gérer le type avec une valeur codifiée (0, 1, 2, ...) dont l'affichage seul est localisé ?

    bonjour et merci pour votre réaction voici le code original avant de changer les libellés en arabe:
    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
    Option Compare Database
     
    Private Sub GererType()
        Select Case TypeAdherent
            Case "Adhérent"
               'On va cacher tous les champs qui concerne les membres et les salariés
               Me.Role.Visible = False
               Me.DteDebutRole.Visible = False
               Me.DteFinRole.Visible = False
               Me.Emploi.Visible = False
               Me.DteDebutContrat.Visible = False
               Me.DteFinContrat.Visible = False
               Me.Salaire.Visible = False
     
           Case "Bureau"
               'On va afficher les champs qui concernent les membres et cacher ceux pour les salariés
               Me.Role.Visible = True
               Me.DteDebutRole.Visible = True
               Me.DteFinRole.Visible = True
               Me.Emploi.Visible = False
               Me.DteDebutContrat.Visible = False
               Me.DteFinContrat.Visible = False
               Me.Salaire.Visible = False
           Case "Employé"
               'On va afficher les champs qui concernent les salariés et cacher ceux pour les membres
               Me.Role.Visible = False
               Me.DteDebutRole.Visible = False
               Me.DteFinRole.Visible = False
               Me.Emploi.Visible = True
               Me.DteDebutContrat.Visible = True
               Me.DteFinContrat.Visible = True
               Me.Salaire.Visible = True
     
           Case esle
               Call Err.Raise(5, , Error$(5) & " -Type non géré.") 'Signale qu'on s'est trompé dans la programmation. Ne devrait jamais se produire en production.
     
       End Select
    End Sub
     
    Private Sub Form_Current()
    Call GererType
    End Sub
     
    Private Sub TypeAdherent_AfterUpdate()
    Call GererType
    End Sub
    ainsi j'ai une liste déroulante et chaque fois que sélectionne un élément des champs concernant cet élément s'affiche et les autres restent invisibles comme dans ces aperçus :
    Nom : ecran1.png
Affichages : 136
Taille : 173,3 KoNom : ecran2.png
Affichages : 204
Taille : 193,4 KoNom : ecran2.png
Affichages : 204
Taille : 193,4 KoNom : ecranDepart.png
Affichages : 146
Taille : 197,2 Ko

    En outre, je doute que la syntaxe "Case esle" soit admise, mais j'avoue que j'ignore si tu as fait un copier-coller de ton code ou une simple erreur de frappe en la recopiant ici.

    Finalement : "Ca ne marche pas", pour moi, ne veut rien dire. Un message d'erreur serait plus pertinent, non ?

    maintent j'ai changé les libellés en arabe c'est tout, mais quand je selectionne un element comme auparavant les champs ne réagit pas et pas un seul message d'erreur.
    Nom : ecranarabe.png
Affichages : 134
Taille : 198,4 Ko

    et voici le code une deuxième fois avec les libelles en arabe:
    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
    Option Compare Database
     
    Private Sub GererType()
        Select Case TypeAdherent
            Case "ãäÎÑØ ÚÇÏí"
               'On va cacher tous les champs qui concerne les membres et les salariés
               Me.Role.Visible = False
               Me.DteDebutRole.Visible = False
               Me.DteFinRole.Visible = False
               Me.Emploi.Visible = False
               Me.DteDebutContrat.Visible = False
               Me.DteFinContrat.Visible = False
               Me.Salaire.Visible = False
     
           Case "ÚÖæ ãÓíÑ"
               'On va afficher les champs qui concernent les membres et cacher ceux pour les salariés
               Me.Role.Visible = True
               Me.DteDebutRole.Visible = True
               Me.DteFinRole.Visible = True
               Me.Emploi.Visible = False
               Me.DteDebutContrat.Visible = False
               Me.DteFinContrat.Visible = False
               Me.Salaire.Visible = False
           Case "ÃÌíÑ"
               'On va afficher les champs qui concernent les salariés et cacher ceux pour les membres
               Me.Role.Visible = False
               Me.DteDebutRole.Visible = False
               Me.DteFinRole.Visible = False
               Me.Emploi.Visible = True
               Me.DteDebutContrat.Visible = True
               Me.DteFinContrat.Visible = True
               Me.Salaire.Visible = True
     
           Case esle
               Call Err.Raise(5, , Error$(5) & " -Type non géré.") 'Signale qu'on s'est trompé dans la programmation. Ne devrait jamais se produire en production.
     
       End Select
    End Sub
     
    Private Sub Form_Current()
    Call GererType
    End Sub
     
    Private Sub TypeAdherent_AfterUpdate()
    Call GererType
    End Sub
    A+

    Bien à toi,

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Re bonjour à toi.

    Je persiste : si c'est effectivement le code que tu utilises, la construction "Case ESLE" n'est pas valable. ESLE n'est pas un token du langage VBA.

    Tu dois remplacer "Case ESLE" par "Case Else"



    Tu peux, normalement, "compiler" le code VBA dans l'éditeur. Ce processus t'indiquera les erreurs de syntaxe de ce type.

    Ensuite, ce que je te suggère de faire, c'est de mettre un point d'arrêt dans le code qui pose problème. Lorsque ce code sera exécuté, l'exécution sera suspendue là où le point d'arrêt sera défini, et tu pourras procéder à l'exécution pas à pas pour déterminer l'instruction provoquant l'erreur.

    Bon courage à toi !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2008
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par th.elnikoff Voir le message
    Re bonjour à toi.

    Je persiste : si c'est effectivement le code que tu utilises, la construction "Case ESLE" n'est pas valable. ESLE n'est pas un token du langage VBA.

    Tu dois remplacer "Case ESLE" par "Case Else"Tu peux, normalement, "compiler" le code VBA dans l'éditeur. Ce processus t'indiquera les erreurs de syntaxe de ce type.
    Tu raison apropos de "Case ESLE" c'est une faute de frappe, mais il ne pose pas problème pendant l’exécution du code avant de changer les libellés.

    Citation Envoyé par th.elnikoff Voir le message
    Ensuite, ce que je te suggère de faire, c'est de mettre un point d'arrêt dans le code qui pose problème. Lorsque ce code sera exécuté, l'exécution sera suspendue là où le point d'arrêt sera défini, et tu pourras procéder à l'exécution pas à pas pour déterminer l'instruction provoquant l'erreur.

    Bon courage à toi !.
    Malheureusement ,j'ai essayé cette méthode de débogage en vain, aucun erreur signalé.
    A+

Discussions similaires

  1. [AC-2010] Difficulté de créer une table réflexive
    Par lhouknifis dans le forum Modélisation
    Réponses: 13
    Dernier message: 03/03/2017, 22h43
  2. [MySQL] créer une table pour une relation réflexive
    Par PeaceMind dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/08/2012, 23h28
  3. Créer une table en VBA ?
    Par nicburger dans le forum Access
    Réponses: 11
    Dernier message: 16/02/2005, 15h15
  4. Réponses: 17
    Dernier message: 03/12/2004, 14h33
  5. Comment créer une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2004, 20h21

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