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

IHM Discussion :

MAJ d'un formulaire en fonction d'un autre


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut MAJ d'un formulaire en fonction d'un autre
    Bonjour,

    J'ai un souci avec mon formulaire principal (qui s'appelle formListMat) contenant 2 sous-formulaires. Je vous explique le principe :

    Je gère les interventions sur du matériel. Le formulaire du haut (appelé formMat) contient le matériel et celui du bas (appelé formInt) contient les interventions. Ces 2 sous-formulaires sont en mode feuille de données.

    Au chargement du formulaire principal, lors de l'événement sur chargement j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.formListeMat.SetFocus
    me permettant de donner le focus au formulaire formListeMat et me positionner sur le 1er enregistrement.

    Dans le formulaire formListeMat, lors de l'événement sur activation, j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    requete = "SELECT idInter, datePrevInter, dateDebInter, dateFinInter, etatInter,numInterneMat FROM intervention WHERE numInterneMat = '" & Me.Form.Recordset("numInterneMat") & "'"
    Forms("formMat").formListeInter.Form.RecordSource = requete
    qui me permet de récupérer la valeur du champ numInterneMat et de mettre à jour la requête dans le sous-formulaire du bas.

    Mon problème : lors du chargement initial de mon formulaire principal, j'ai le message d'erreur suivant qui apparaît :
    Citation Envoyé par Access
    Erreur d'exécution '2455' La référence d'une expresion à la propriété Form/Report n'est pas valide
    et ceci concerne cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("formMat").formListeInter.Form.RecordSource = requete
    Pouvez-vous me donner un coup de main svp ?

    Merci d'avance ;-)

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Bonjour,

    Quand tu dis :
    mon formulaire principal (qui s'appelle formListMat) contenant 2 sous formulaire
    Ca veut dire que :
    a - formlistMat contient formMat et formlistMat contient formInt
    ou
    b - formlistMat contient formMat qui contient formInt

    parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("formMat").formListeInter.Form.RecordSource = requete
    suppose qu'on définit la source du sous-formulaire formListeInter (je pense que c'est le nom dans Autres de formInt) qui est contenu dans le formulaire formMat (qui se trouve être un sous-formulaire).

    Je dirais que selon a ou b et le lieu d'où on appelle le code, on devrait écrire :

    a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("formlistMat").formListeInter.Form.RecordSource = requete
    b :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.formListeInter.Form.RecordSource = requete
    C'est pas évident effectivement, bonne continuation

  3. #3
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Cela vient de ta formule Me.Form.Recordset("numInterneMat") qui n'existe pas au démarrage.

    Pour cela, il faut que tu enlèves Me.Form.Recordset("numInterneMat") de ta requête, et tu le remplaces pas une variable, ainsi tu pourras initialiser cette variable au démarrage... et cela supprimera l'erreur.

    @+.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je n'ai peut être pas été très clair :-)
    Mon formulaire principal est formMat. Dedans il y a 2 formulaire enfant. Celui du haut est formListMat et celui du bas formListInt.

    Je voudrais quand même pouvoir afficher le contenu de la requête dans le formulaire du bas mais je suppose qu'il y a un élément qui n'est pas défini au chargement. Est-ce que vous pouvez m'aider la dessus ?

  5. #5
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Essaie de faire ceci et de voir le résultat que tu obtiens avec le msgbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    requete = "SELECT idInter, datePrevInter, dateDebInter, dateFinInter, etatInter,numInterneMat FROM intervention WHERE numInterneMat = '" & Me.Form.Recordset("numInterneMat") & "'"
    msgbox requete
    Forms("formMat").formListeInter.Form.RecordSource = requete
    Le résultat du msgbox t'indiquera ce qui ne va pas

    @+.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Le résultat de ma msgbox est : SELECT idInter, datePrevInter, dateDebInter, dateFinInter, etatInter, numInterneMat FROM intervention WHERE numInterneMat = 'M1496'

    donc à priori pas de problème j'ai même pu tester la requête en mode SQL et elle me retourne bien un résultat.

    J'ai l'impression que le problème vient de la propriété a RecordSource dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms("formMat").formListeInter.Form.RecordSource
    qui ne doit pas être valide au chargement du formulaire car si par exemple je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Msgbox Forms("formMat").formListeInter.Form.name
    le nom de mon sous formulaire m'est bien retouné

  7. #7
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Essaie donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!formMat!formListeInter.RecordSource
    @+.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    ça ne marche pas j'ai toujours le même message d'erreur ça me désole

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Et si tu essayais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("formlistMat").formListeInter.Form.RecordSource = requete

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Non ça ne marche pas non plus

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 841
    Points : 7 975
    Points
    7 975
    Par défaut
    Est-ce que tu peux mettre en ligne la partie de la base avec les objets nécessaires uniquement et les données non confidentielles (sous version 2003) pour qu'on regarde de près.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Bonsoir voir le code source de ma base access en pièce jointe.

    Par contre je m'excuse mais le projet est en accdb donc pas accessible pour 2003 désolé


    Pour accéder au mode développement, il faut appuyer sur la touche MAJ.

    Le formulaire principal que l'utilisateur verra au lancement est formPrincipal il clic sur le bouton matériel et voici mon problème mentionné plus haut.

    Je viens de réaliser qu'en mode "utilisateur" je n'ai pas de message d'erreur mais il ne m'affiche pas ce que je veux (il m'affiche toutes les interventions alors que je veux uniquement celle de la 1ère ligne du formulaire du haut).

    Merci d'avance de jeter un oeil à mon code.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [AC-2007] Compléter un champ de formulaire en fonction d'un autre champ
    Par Tchebichef dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 19/08/2016, 14h01
  2. Réponses: 1
    Dernier message: 13/03/2013, 10h09
  3. [AC-2007] préremplir un formulaire en fonction d'un autre formulaire
    Par Oliv'83 dans le forum IHM
    Réponses: 1
    Dernier message: 04/05/2012, 12h06
  4. Réponses: 6
    Dernier message: 11/10/2004, 14h58
  5. Forcer la saisie en MAJ dans un Formulaire
    Par lolos dans le forum IHM
    Réponses: 4
    Dernier message: 12/08/2003, 10h57

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