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 :

erreur 2450 lors de l'appel d'une fonction sur le load d'un sous-formulaire


Sujet :

IHM

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut erreur 2450 lors de l'appel d'une fonction sur le load d'un sous-formulaire
    Bonjour,

    Je reposte sur ce forum ci une question que j'ai postée sur le forum VBA.

    Je suis en train d'adapter le code du Tuto de caféine sur le suivi des modifications (et l'annulation éventuelle de celles-ci) sur ma base (cf. Stocker et Annuler les mises à jour dans un formulaire).
    J'ai un formulaire qui contient plusieurs onglets contenant chacun un sous formulaire. Le formulaire principal est dépendant d'une table de même que chacun des sous-formulaires (ça peut être des tables différents du formulaire principal).

    Dans l'évènement Load du formulaire principal, je mets l'appel à la fonction de traçage des modifications et ça fonctionne parfaitement. Dans un second temps j'ai mis cet appel à cette fonction (cf tuto) au niveau de l'évenement load d'un sous-formulaireet ça m'affiche le message suivant quand j'ouvre le formulaire principal:
    erreur 2450 : Microsoft Access can't find the forms "nom de mon sous-formulaire" referred to in a Macro expression or Visual Basic code

    La ligne en fluo est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' analyse de la source du formulaire
    If Len(Forms(strFrmName).RecordSource) > 0 Then
    strFrmName contient bien le nom du formulaire (utilisé en sous-formulaire) qui a appellé la fonction.

    J'en déduit que l'appel à la fontion de traçage se fait avant que le sous-formulaire soit complètement chargé... (mais load = chargé, non?) ou alors c'est que cette fonction de traçage ne sait pas où trouver le sous formulaire (dans mon formulaire principal) ou le recordsource?
    J'ai également tester l'appel de cette fonction sur les évènnement Current et activate mais nada, rien, nothing. Pas de message d'erreur mais pas de suivi des modif non plus.

    Quelqu'un pourrait m'aider à y voir clair?

    Merci à vous tous et toutes et bonne journée!

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    If Len(Forms(strFrmName).RecordSource) > 0 Then
    Tu ne peux pas appeler un sous form avec cette syntaxe.
    Dans ton cas utilise Me
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Me.RecordSource) > 0 Then
    sinon pour plus de détails, vois le tableau des appels dans Access (notamment dans les sous forms) de Loufab
    http://loufab.developpez.com/tutorie...pelformulaire/
    "Always look at the bright side of life." Monty Python.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut
    Bonjour et Merci Micniv pour ton intervention! te pour les explications de loufab!! Très pertinentes et claires. Mais j'y arrive pas

    Si je comprends bien le message d'erreur, il ne trouve pas le sous-formulaire correspondant.

    Pour détailler un peu, j'ai mis (cf tuto de caféine) dans l'évennement Load du sous-formulaire l'appel à la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Load()
     
    Dim str As String
     
    str = CStr("Forms.Form_" & Me.Parent.Name & "." & "Form_" & Me.Name & ".Form")
     
    DAOLogUpdates str, Me.NumCD.Name
     
    End Sub
    str est une chaine résultante qui donne "Forms.Form_formulaireparent.Form_sousformulaire.Form"
    les noms des formulaires sont tels qu'ils apparaissent dans la fenêtre d'explorateur de projet. Cette chaîne est passée sous format String à la fonction DAOLogUpdates. Et si je comprends bien, elle est réinterprétée comme Forms pour pouvoir accéder au recordsource (ceci grâce au
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Len(Forms(strFrmName).RecordSource) > 0 Then
    Mais ça ne fonctionne pas... il y a un message d'erreur disant qu'ils ne trouve pas le formulaire...

    Quel est mon problème de syntaxe?... Je vois pas du tout...


  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut
    Je voulais préciser que mon sous formulaire est situé dans un onglets.

    Merci

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 898
    Points : 4 787
    Points
    4 787
    Par défaut
    le fait que ton sous-form soit dans un onglet n'a pas d'impact.

    Je n'ai pas regardé le tuto de cafeine
    mais en ce qui concerne l'appel au recordsource d'un sous-form, tu devras avoir fatalement une syntaxe de la forme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!formulaireparent!sousformulaire.Form.recordSource
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("formulaireparent").controls("sousformulaire").Form.recordSource
    Bonne continuation
    "Always look at the bright side of life." Monty Python.

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut
    Merci micniv!
    Je teste ça lundi au plus tard.
    Bon weekend!!

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut
    Bonjour Micniv,

    La seconde formulation que tu me proposais fonctionne (pourquoi pas la première??? mystère...).
    Je vais continuer la modif de mon code (car il faut que j'introduise un test vérifiant si un formulaire est parent ou enfant et en fonction de cela ajuster le codage du suivi des évennements).
    Je reposterai probablement si je coince encore.

    A bientôt et très bonne continuation a toi! (et à tous je vous oublie pas )

Discussions similaires

  1. [XL-2010] Erreur lors de l'appel d'une fonction VBA à partir d'Excel
    Par Romain92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2014, 11h21
  2. SoapClient : erreur lors de l'appel d'une fonction
    Par djaih dans le forum Langage
    Réponses: 18
    Dernier message: 08/01/2010, 14h14
  3. Erreur lors de l'appel d'une fonction
    Par larimoise dans le forum MATLAB
    Réponses: 6
    Dernier message: 21/04/2007, 11h02
  4. Réponses: 2
    Dernier message: 09/01/2006, 09h38
  5. Réponses: 5
    Dernier message: 06/01/2006, 11h41

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