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 :

Ouverture d'un sous formulaire, si absence dans liste


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut Ouverture d'un sous formulaire, si absence dans liste
    Bonjour tous le monde,
    pour commencer je tiens à dire merci d'avance car je suis novice expérimenté à l'application access.
    Voila j'ai une base de données à rendre pour mon travail dans quelques jours et j' ai besoin d' aide vraiment.

    Fonctionnement de ma base:
    C' est une base qui servira pour la gestion des voyages de chaques salarié avec formulaire de saisie.
    L' utilisateur devra rentrer les infos sur le formulaire principal de la table principal (table voyage) et rajouter les données sur les formulaires secondaires en meme temps.
    Toutes les saisies se font sur liste déroulante.

    mon probleme :
    lorsque je rentre une commande sur mon formulaire principal (voyage), je voudrais qu' il me dise qu'elle n'éxiste pas et qu'il me propose de l'ajouter dans le formulaire secondaire (commande).

    Voici le code que j'ai éffectué sur "evenement absence dans liste" de la liste modifiable voyages.commande du formulaire principal:

    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
    Private Sub VOYAGES_COMMANDE_NotInList(NewData As String, Response As Integer)
    Dim intmsgdialogue As Integer, strtitre As String
    Dim intnvcommande As Integer, strMsg As String
    If IsNull([VOYAGES_COMMANDE]) Then
    strtitre = "Commande inconnu dans la table"
    strMsg = "Voulez-vous ajouter une commande?"
    intmsgdialogue = vbYesNo + vbExclamation
    intnvcommande = MsgBox(strMsg, intmsgdialogue, strtitre)
    If intnvcommande = vbYes Then
    DoCmd.DoMenuItem acFormBar, acEdit, acUndo
    DoCmd.OpenForm "[commandes_req]", , , acAdd
    forms![COMMANDES_REQ]![commande] = NewData
    Response = acDataErrContinue
    Else
    Response = acDataErrDisplay
    DoCmd.DoMenuItem acFormBar, acEdit, acUndo
    strMsg = "pour modifier le nom de "
    MsgBox strMsg
    DoCmd.DoMenuItem acFormBar, acEdit, acUndo
    Response = acDataErrAdded
    DoCmd.OpenForm "[ORDRE_AFFECTATION]", , , acAdd
    forms![ordre_affectation]![commande] = NewData
    End If
    End Sub
     
    End Sub
    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Bonjour,

    Oui...et alors quel est le problème......

    Un peu plus d'explication serait bienvenue......avec éventuellement le message d'erreur ou nous expliquer ce qui se passe ou pas.......lorsque tu exécute ton code...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut
    c' est bien ca le problème, je n' ai aucun message. Aucune demande d' ajout dans la table secondaire. ( ce que j' ai essayer de faire dans mon code :/ )
    Le seul message que j' ai est qu'il me dit qu' il ne trouve aucun enregistrement correspondant a la table, normal vu que l' utilisateur rentre les données sur le formulaire principal qui est neutre.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonsoir ou bonjour,
    le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Isnull(VOYAGES_COMMANDE)
    ne sert à rien et même fausse tout le code. Si l'événement a lieu; le contrôle contient bien une valeur contenue dans le paramètre NewData et cette valeur n'a aucune entrée dans la liste. Essaie en retirant ce test; il y a sûrement d'autres erreurs.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut
    Toujours pareil, rien se passe et toujours le même message d' erreur. :/
    le message est en pièce jointe ...
    Si quelqu'un à 1 solution, Merci ..
    Images attachées Images attachées  

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    comme précisé plus haut, il y a je crois des erreurs de logique dans le code.
    D'abord, pourquoi annuler l'événement quelque soit le choix de l'utilisateur.
    Il n'y a pas d'ajout dans la liste du nouvel élément.

    'Premier partie demande d'insertion d'une nouvelle commande.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     If intnvcommande = vbYes Then
        'Pourquoi annuler ???
        DoCmd.DoMenuItem acFormBar, acEdit, acUndo
     
        'Tu ouvres un formulaire en mode Ajout Nouvel Enregistrement
        ' mais sans attendre la confirmation de l'insertion.
        'Et sans mettre à jour la liste; l'élément n'est donc pas ajouter alors que
        ' l'utilisateur l'a demandé.
        DoCmd.OpenForm "[commandes_req]", , , acAdd
        forms![COMMANDES_REQ]![commande] = NewData
     
        'Ici, tu considères que l'ajout n'a pas eu lieu. 
        Response = acDataErrContinue
    'Seconde partie l'utilisateur a répondu Non à la demande d'insertion d'une nouvelle commande
    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
     
    Else
        Response = acDataErrDisplay
     
        'Tu annules la saisie par un undo 
        DoCmd.DoMenuItem acFormBar, acEdit, acUndo
     
        'Tu affiches un message incomplet
        strMsg = "pour modifier le nom de "
        MsgBox strMsg
     
        'Tu effectues de nouveau un Undo. sur quoi ?
        DoCmd.DoMenuItem acFormBar, acEdit, acUndo
     
        'Et ici tu renvoies l'information que l'élément a été ajouté à la liste alors
        'que l'utilisateur à demander le contraire et qu'il n'y a eu aucun ajout
        Response = acDataErrAdded
     
        '??????
        DoCmd.OpenForm "[ORDRE_AFFECTATION]", , , acAdd
        forms![ordre_affectation]![commande] = NewData
    End If
    End Sub

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Par défaut
    Merci pour tes réponses..
    Sinon voila j' ai essayé de refaire un petit code en suivant tes conseils mais tjs rien ...

    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
    Private Sub COMMANDE_NotInList(NewData As String, Response As Integer)
    Dim intmsgdialogue As Integer, strtitre As String
    Dim intnvclient As Integer, strMsg As String
    strtitre = "Commande inconnu dans la table"
    strMsg = "Voulez-vous ajouter une commande?"
    intmsgdialogue = vbYesNo + vbExclamation
    intnvclient = MsgBox(strMsg, intmsgdialogue, strtitre)
    If intnvclient = vbYes Then
    DoCmd.OpenForm "[commandes_req]", , , acAdd
    forms![COMMANDES_REQ]![COMMANDE] = NewData
    NewData.Requery
    Response = acDataErrAdded
    Else
    Response = acDataErrContinue
    COMMANDE.Undo
    End If
    End Sub
    Je commence à désespéré ... :/

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/06/2012, 16h10
  2. Réponses: 8
    Dernier message: 04/11/2008, 11h05
  3. Réponses: 2
    Dernier message: 28/06/2007, 09h22
  4. Réponses: 1
    Dernier message: 04/05/2007, 12h15
  5. ouverture dynamique de sous-formulaire
    Par seurjer dans le forum IHM
    Réponses: 2
    Dernier message: 27/11/2006, 18h55

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