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 :

[Formulaire] bug après gestion du NotInList


Sujet :

Access

  1. #1
    Invité
    Invité(e)
    Par défaut [Formulaire] bug après gestion du NotInList
    Bonjour à tous,

    J'ai un gros problème de plantage d'Access, a cause d'un formulaire !?

    Ce formulaire est basé sur une table "Tbl Opérations", et contient un sous-formulaire lié par "NumOP".
    J'ai créé une liste déroulante modifiable "ListeOP", qui "After update" va positionner l'enregistrement sur "NumOP" trouvé.

    Dans cette liste on peut saisir un nouveau numéro et sur l'évènement "NotInList" créé un nouvel enregistrement dans "Tbl Opérations", par une requête ajout !
    Et c'est après qu'intervient le soucis de plantage !
    Voici mes proc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub ListeOP_AfterUpdate()
      ValOP = Me.ListeOP.Value
      ' Rechercher l'enregistrement correspondant au contrôle.
      Dim Rs As Object
      Set Rs = Me.Form.RecordsetClone
      Rs.FindFirst "[NumOP]= '" & ValOP & "'"
      If Not Rs.EOF Then Me.Form.Bookmark = Rs.Bookmark
      Rs.Close: Set Rs = Nothing
    End Sub
    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 ListeOP_NotInList(NewData As String, Response As Integer)
      If MsgBox("Ce numéro d'Affaire n'existe pas" & vbCrLf _
        & "Voulez-vous le créer ?", vbQuestion + vbYesNo, "Question ?") = vbYes Then
        ' Si la réponse est oui on créé la nouvelle Affaire
        strSQL1 = "INSERT INTO [Tbl Operations] ( NumOP ) "
        strSQL2 = "SELECT '" & NewData & "' ;"
        DoCmd.SetWarnings (False): DoCmd.RunSQL (strSQL1 + strSQL2): DoCmd.SetWarnings (True)
        DoCmd.OpenForm "XFrm AjoutOP", acNormal, , "[NumOP]= '" & NewData & "'", acFormEdit, acDialog
        ' On empèche l'erreur
        Response = acDataErrAdded
        Me.ListeOP.Value = NewData
        Me.Form.Requery
      Else
        Response = acDataErrContinue
      End If
    End Sub
    Quand je fais : Me.Form.Requery, pour actualiser mon formulaire avec la nouvelle valeur ! CA PLANTE ! Mais vraiment sérieux !

    Je ne comprends pas !

    Quelqu'un à une idée !?

    Cordialement.

    Merci d'utiliser des titres explicites (ancien titre : Gros problème ...) | cafeine

  2. #2
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    il me semble que l'erreur viens de l'ouverture de ton sous formulaire:

    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
    Private Sub ListeOP_NotInList(NewData As String, Response As Integer) 
      If MsgBox("Ce numéro d'Affaire n'existe pas" & vbCrLf _ 
        & "Voulez-vous le créer ?", vbQuestion + vbYesNo, "Question ?") = vbYes Then 
        ' Si la réponse est oui on créé la nouvelle Affaire 
        strSQL1 = "INSERT INTO [Tbl Operations] ( NumOP ) " 
        strSQL2 = "SELECT '" & NewData & "' ;" 
        DoCmd.SetWarnings (False): DoCmd.RunSQL (strSQL1 + strSQL2): DoCmd.SetWarnings (True) 
    ' si c'est l'ouverture du sous formulaire c'est faux
    ' car ici tu ouvre un formulaire et le code reste dedans d'ou tes problème
    'par contre tu peux faire
    me.requery (mets à jour le formulaire principal
       Me.ListeOP.Value = NewData 
       me![sousformulaire].requery
    ' en parametrant la requête du sous form sur la liste déroulante
        DoCmd.OpenForm "XFrm AjoutOP", acNormal, , "[NumOP]= '" & NewData & "'", acFormEdit, acDialog 
        ' On empèche l'erreur 
        Response = acDataErrAdded 
     
       Else 
        Response = acDataErrContinue 
      End If 
    End Sub
    c'est je pense l'ordre dans le quel tu fais les opérations qui plante
    A+

  3. #3
    Invité
    Invité(e)
    Par défaut Non, non...
    Bonjour Alexandre, et merci...

    l'erreur ne vient pas de là, j'ai testé en mode débogage

    L'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "XFrm AjoutOP", acNormal, , "[NumOP]= '" & NewData & "'", acFormEdit, acDialog
    Permet à l'utilisateur de saisir des informations complémentaires concernant la nouvelle affaire !

    Ca plante dur à l'instruction : Cordialement. 8)

  4. #4
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    remplace par le code suivant:


  5. #5
    Invité
    Invité(e)
    Par défaut Ok...
    Ok

    mais quel est la différence ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    je ne connais pas la différence.

    cependant me.requery recharge réactualise la requête de l'objet me (c'est à dire le formulaire actif)

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Jamais de requery durant un evenement Notinlist !

    le dataerradd s'en charge.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  8. #8
    Invité
    Invité(e)
    Par défaut OK, mais alors...
    Salut à toi au Grand Loufab

    Jamais de requery durant un evenement Notinlist !
    Effectivement ça ne laisse aucune chance à Access ;-)

    Mais comment puis-je faire pour ré-actualiser mon sous-formulaire ?

    Pour le moment j'ai créé un formulaire à part pour créer la nouvelle opération ! Dommage !

    Cordialement.

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Dans le cas ou ton sous-form ne contient pas cette combo (zone liste déroulante en français microsoft ) utilise cette syntaxe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me!Sous_form2.Form.Requery

    Ps: bientôt à paraitre un tableau des appels VBA entre form, sous form, report, sous report.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  10. #10
    Invité
    Invité(e)
    Par défaut Voilà..
    Salut 8)

    Voilà, j'ai résolu mon problème !
    J'avoue de façon un peu spéciale, mais ça fonctionne.

    Dans mon Combo sur l'évènement "NotInList" je fais :
    1) ouverture d'un formulaire nouvelle opération
    2) fermeture du formulaire principal

    Dans mon formulaire "Nouvelle opération" je ré-ouvre le formulaire principal après saisie et fermeture

    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2007, 22h55
  2. Réponses: 4
    Dernier message: 28/11/2006, 13h55
  3. [Conception] Formulaire dynamique de gestion d'une BD
    Par BARBIER dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 21/03/2006, 17h58
  4. [Formulaire] Bug de l'assistant
    Par snowhautes dans le forum IHM
    Réponses: 1
    Dernier message: 24/01/2006, 08h47
  5. [NAV 2004] Bug après avoir renommé la corbeille
    Par Halleck dans le forum Windows
    Réponses: 2
    Dernier message: 29/02/2004, 21h06

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