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 :

Code : ouvrir un formulaire sur enregistrement precis


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut Code : ouvrir un formulaire sur enregistrement precis
    Bonjour,

    Je souhaiterais quitter un formulaire de saisie lorsque la valeur est deja présente dans la base et renvoyer l'utilisateur sur la fiche de consultation existante. Voici le code :

    Private Sub idemp_AfterUpdate()
    Dim Nb As Long, Titre As String, Message As String, Réponse

    Nb = DCount("idemp", "f_emprunteur", "idemp=" & Me.idemp)

    If Nb >= 1 Then
    Titre = "Le code emprunteur " & Me.idemp & " est déjà dans la base"
    Message = "Cliquez sur Oui pour modifier votre saisie " & _
    vbCrLf & vbCrLf & _
    "Cliquez sur Non afin d'être redirigé(e) vers la page précédente " & _
    "et de séléctionner l'emprunteur à l'aide des menus déroulants"

    Réponse = MsgBox(Message, vbYesNo, Titre)

    If Réponse = vbYes Then
    Me.idemp.SetFocus
    Else
    DoCmd.close
    Dim stDocName As String
    Dim stLinkCriteria As String


    DoCmd.OpenForm "modif_dr_assos", , , "[choixemp] =" & Me.idemp

    End If
    Else
    ' le code emprunteur est nouveau
    End If
    End Sub


    Le code du début marche, mais lorsque que je veu renvoyer l'utilisateur sur le formulaire avec la valeur qu'il a saisi dans le controle idemp. Le debogueur m'indique "l'expression entrée fait référence à un objet fermé ou supprimé"
    Je n'ai plus de message d'erreur si j'enregistre idemp dans une variable mais ca ne marche pas non plus (access demande de saisir un parametre).

    Merci d'avance pour votre aide précieuse !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    Salut

    C'est normal, tu fermes le form puis tu demandes d'en ouvrir un avec des parametres du premier.
    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
    Private Sub idemp_AfterUpdate()
    Dim Nb As Long, Titre As String, Message As String, Réponse
     
    Nb = DCount("idemp", "f_emprunteur", "idemp=" & Me.idemp)
     
    If Nb >= 1 Then
    Titre = "Le code emprunteur " & Me.idemp & " est déjà dans la base"
    Message = "Cliquez sur Oui pour modifier votre saisie " & _
    vbCrLf & vbCrLf & _
    "Cliquez sur Non afin d'être redirigé(e) vers la page précédente " & _
    "et de séléctionner l'emprunteur à l'aide des menus déroulants"
     
    Réponse = MsgBox(Message, vbYesNo, Titre)
     
    If Réponse = vbYes Then
    Me.idemp.SetFocus
    Else
    DoCmd.OpenForm "modif_dr_assos", , , "[choixemp] =" & Me.idemp
    DoCmd.close "LeFormDeSaisie"
    End If
    Else
    ' le code emprunteur est nouveau
    End If
    End Sub

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Toujours pas de réponse ? Je vous met le code en vert pour plus de lisibilité ! J'ai vraiment besoin de votre aide !
    Je souhaiterais quitter un formulaire de saisie lorsque la valeur est deja présente dans la base et renvoyer l'utilisateur sur la fiche de consultation existante. 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
    Private Sub idemp_AfterUpdate() 
    Dim Nb As Long, Titre As String, Message As String, Réponse 
     
    Nb = DCount("idemp", "f_emprunteur", "idemp=" & Me.idemp) 
     
    If Nb >= 1 Then 
    Titre = "Le code emprunteur " & Me.idemp & " est déjà dans la base" 
    Message = "Cliquez sur Oui pour modifier votre saisie " & _ 
    vbCrLf & vbCrLf & _ 
    "Cliquez sur Non afin d'être redirigé(e) vers la page précédente " & _ 
    "et de séléctionner l'emprunteur à l'aide des menus déroulants" 
     
    Réponse = MsgBox(Message, vbYesNo, Titre) 
     
    If Réponse = vbYes Then 
    Me.idemp.SetFocus 
    Else 
    DoCmd.close 
    Dim stDocName As String 
    Dim stLinkCriteria As String 
     
     
    DoCmd.OpenForm "modif_dr_assos", , , "[choixemp] =" & Me.idemp 
     
    End If 
    Else 
    ' le code emprunteur est nouveau 
    End If 
    End Sub

    Le code du début marche, mais lorsque que je veu renvoyer l'utilisateur sur le formulaire avec la valeur qu'il a saisi dans le controle idemp. Le debogueur m'indique "l'expression entrée fait référence à un objet fermé ou supprimé"
    Je n'ai plus de message d'erreur si j'enregistre idemp dans une variable mais ca ne marche pas non plus (access demande de saisir un parametre).

    Merci d'avance pour votre aide précieuse !

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Merci boubignole, mais le probleme avec cette methode c'est que j'ai l'impression que la valeur du controle n'est pas enregistrée. J 'ai un petite fenetre d'invite d'Access qui s'ouvre :

    Titre : Entrez une valeur de parametre

    Message : choixemp

    Invite de saisie :


    que faire dans ce cas la ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    Tu as bien déclaré tes variables titre et message en string ?

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    choixemp est-il dans la requète sous-jacente au formulaire modif_dr_assos ?

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Oui c'est dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Nb As Long, Titre As String, Message As String, Réponse
    la partie haute du code (jusqu'a else) marche puisque si je supprime la partie basse ca marche.

    La fenetre qui apparait n'est pas la fenetre que j'appel dans le code c'est une fenetre type de fonctionnement access.

    Vais-je y arriver un jour :

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Oui kloun, le probleme doit venir de la : choixemp est le nom du controle
    mais la requete de selection appel le champ idemp

    Je change alors le nom choixemp par idemp
    la boite d'invite ne s'ouvre ! le code reconnait donc le parametre !

    Mais 2 problemes apparaissent !

    -Le formulaire n'ouvre pas sur l'enregistrement saisi par l'utilisateur (champs vides)
    - Le code bug au niveau du DoCmd.Close "formulaire_saisie"

    Ces problemes viennent de quoi ?

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    1 - Le code affiché au dessus est toujours le bon ?
    2 - IdEmp est un numérique ?
    3 - C'est quoi le bug ?

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    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
    Private Sub idemp_AfterUpdate()
    Dim Nb As Long, Titre As String, Message As String, Réponse
     
    Nb = DCount("idemp", "f_emprunteur", "idemp=" & Me.idemp)
     
    If Nb >= 1 Then
        Titre = "Le code emprunteur " & Me.idemp & " est déjà dans la base"
        Message = "Cliquez sur Oui pour modifier votre saisie " & _
            vbCrLf & vbCrLf & _
            "Cliquez sur Non afin d'être redirigé(e) vers la page précédente " & _
            "et de séléctionner l'emprunteur à l'aide des menus déroulants"
     
        Réponse = MsgBox(Message, vbYesNo, Titre)
     
        If Réponse = vbYes Then
            Me.idemp.SetFocus
        [b]Else
            DoCmd.OpenForm "dr_emp_assos", , , "[idemp] =" & Me.idemp
            DoCmd.Close "FormulaireSaisie"[/b]        
    End If
    Else
    ' le code emprunteur est nouveau
    End If
    End Sub
    Voila le code tel qu'il est actuellement (ne pas faire attention au changement de nom du formulaire, c'est juste parce que j'ai rennomé le formulaire).

    La partie en gras est la partie qui pose probleme
    Tu ne vois toujour rien ?

  11. #11
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Le gras n'a pas marché, le problem dans le code vien de la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Else 
            DoCmd.OpenForm "dr_emp_assos", , , "[idemp] =" & Me.idemp 
            DoCmd.Close "FormulaireSaisie"

  12. #12
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    oui idemp est en numerique,
    le bug est "erreur 13 incompatibité de type"
    le debugueur met en jaune la ligne DoCmd.Close...

  13. #13
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    essaie ça :
    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
    Private Sub idemp_AfterUpdate() 
    Dim Nb As Long, Titre As String, Message As String, Réponse 
     
    Nb = DCount("idemp", "f_emprunteur", "idemp=" & Me.idemp) 
     
    If Nb >= 1 Then 
        Titre = "Le code emprunteur " & Me.idemp & " est déjà dans la base" 
        Message = "Cliquez sur Oui pour modifier votre saisie " & _ 
            vbCrLf & vbCrLf & _ 
            "Cliquez sur Non afin d'être redirigé(e) vers la page précédente " & _ 
            "et de séléctionner l'emprunteur à l'aide des menus déroulants" 
     
        Réponse = MsgBox(Message, vbYesNo, Titre) 
     
        If Réponse = vbYes Then 
            Me.idemp.SetFocus 
        Else
            debug.print "-" & me.idemp.value & "-"
            DoCmd.OpenForm "dr_emp_assos", , , "[idemp] =" & Me.idemp 
            DoCmd.Close acForm, Me.Name
        End If 
    Else 
    ' le code emprunteur est nouveau 
    End If 
    End Sub
    Qu'est ce que t'as dans la fenêtre de débogage ?

  14. #14
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Je précise qu'a part fermer le formulaire, mon objectif premier dans cette partie du code est d'ouvrir le formulaire sur la valeur saisie par l'utilisateur (valeur qui est deja présente dans la base, la premiere partie du code verifie cela)
    Je déprime...

  15. #15
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Quand tu ouvres ton formulaire directement, avec toutes les données, tu retrouves bien tes données ?

    Accessoirement, la propriété "Filtrage autorisée" de ton formulaire est bine à oui ?

  16. #16
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Merci, le formulaire ferme correctement
    et "dr_emp_assos" s'ouvre correctement, plus de bug quoi !
    C'est deja trés bien !

    mais... "dr_emp_assos" s'ouvre vide
    Je precise, si ca peut t'aider que dr_emp_assos est le formulaire d'acceuil de l'application, il est donc deja ouvert.

    Vous ne voyez comment faire pour que dr_emp_assos s'ouvre sur la valeur saisi par l'utilisateur ?

    : : : : : : : : : :

  17. #17
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    oui, meme quand il est ouvert avec le code il marche, seulement l'utilisateur doit selectionner "idemp" de la maniere suivante
    - en selectionnant le département dans une zone deroulante
    - puis idemp qui appartiennent à ce departement (c'est le libellé qui apparait à l'utilisateur bien sur)

    Mais ce que je voudrai, puisque l'utilisateur s'est trompé en saisissant un emp qui est deja dans la base c'est qu'il soit directement revoyé a sa fiche (un sous-formulaire est attaché a dr_emp_asso)

  18. #18
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    voila la requete de selection de l'emp ds dr_emp_asso

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT f_emprunteur.idemp, f_emprunteur.libemp, f_emprunteur.dr FROM f_emprunteur WHERE (((f_emprunteur.dr)=Formulaires!dr_emp_assos!choixcat) And ((f_emprunteur.idcat)=2)) ORDER BY f_emprunteur.idemp;
    tu crois que ca vien du faite que la requete soit filtré par dr_emp_assos!choixcat ?

    [Modération, cafeine : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]

  19. #19
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    et oui le filtrage est autorisé mais ca met plait pas trop que le code change les proprieté de l'autre formulaire...
    tu voi une autre solution ?

    Je te saoule peut etre... dsl et merci pour tt le tps que tu m'as consacré, meme si ta pas la solution a mon probleme, c trés sympa de ta part

  20. #20
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 184
    Points : 1 363
    Points
    1 363
    Par défaut
    Tu peux essayer en enlevant le "f_emprunteur.dr=Formulaires!dr_emp_assos!choixcat" de ta requète ?

Discussions similaires

  1. [AC-2003] Ouvrir sous formulaire sur enregistrement précis
    Par mercatog dans le forum IHM
    Réponses: 2
    Dernier message: 26/07/2009, 17h17
  2. Débutant : ouvrir un formulaire sur enregistrement
    Par energies dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2006, 16h46
  3. Ouvrir un formulaire sur un enregistrement donné
    Par gaetanc15 dans le forum Langage
    Réponses: 6
    Dernier message: 14/03/2006, 10h19
  4. Réponses: 1
    Dernier message: 12/12/2005, 16h11
  5. Ouverture formulaire sur enregistrement precis
    Par mat_lefebvre dans le forum IHM
    Réponses: 7
    Dernier message: 11/10/2004, 15h37

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