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 :

Message d'erreur au changement de la propriété RecordSource


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut Message d'erreur au changement de la propriété RecordSource
    Bonjour,

    j'ai un formulaire access qui contient un sous-formulaire et un bouton de commande.

    Lorsque je clique sur le bouton, je crée une requête, et j'essaye d'affecter ses résultats au recordsource de mon sous-formulaire.

    Au départ, ça ne fonctionnait pas du tout, car je n'avais rien séléctionné du tout dans propriétés/objet source de mon sous-formulaire.

    mais maintenant que j'ai mis quelque chose (une requête), il me met ça :

    La référence d'une expression à la propriété recordsource n'est pas valide.

    mon 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
     
    Private Sub Commande2_Click()
     
    Dim str As String
    str = "SELECT catalog_sbu.idcode_access, catalog_sbu.code, reftache.idreftache_access, reftache.nomreftache, reftache.loi_calcul_idloi_calcul"
    str = str & " FROM reftache INNER JOIN "
    str = str & " (catalog_sbu INNER JOIN catalog_sbu_has_reftache ON catalog_sbu.idcode_access = catalog_sbu_has_reftache.catalog_sbu_idcode_access)"
    str = str & " ON reftache.idreftache_access = catalog_sbu_has_reftache.reftache_idreftache_access"
    str = str & " WHERE (([catalog_sbu].[idcode_access] = 12886))"
    str = str & " AND (((catalog_sbu.idcode_access) Not In (SELECT catalog_sbu.idcode_access"
    str = str & " FROM straitant INNER JOIN (((("
    str = str & " loi_calcul INNER JOIN reftache ON loi_calcul.idloi_calcul_access = reftache.loi_calcul_idloi_calcul)"
    str = str & " INNER JOIN straitant_has_loi_calcul ON loi_calcul.idloi_calcul_access = straitant_has_loi_calcul.loi_calcul_idloi_calcul)"
    str = str & " INNER JOIN (catalog_sbu INNER JOIN catalog_sbu_has_reftache ON catalog_sbu.idcode_access = catalog_sbu_has_reftache.catalog_sbu_idcode_access)"
    str = str & " ON reftache.idreftache_access = catalog_sbu_has_reftache.reftache_idreftache_access)"
    str = str & " INNER JOIN couttache ON reftache.idreftache_access = couttache.reftache_idreftache_access) "
    str = str & " ON (straitant.idstraitant_access = straitant_has_loi_calcul.straitant_idstraitant_access) "
    str = str & " AND (straitant.idstraitant_access = couttache.straitant_idstraitant_access)"
    str = str & " WHERE catalog_sbu.idcode_access = 12886"
    str = str & " )) AND ((reftache.loi_calcul_idloi_calcul) Is Not Null)) ;"
     
    'Me.test.Caption = str
    Me.sf.Form.RecordSource = str
     
     
    End Sub
    quelqu'un sait-il ce qu'il se passe à tout hazard ?
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    As-tu fais un Debug.Print de ta requête pour voir ce que cela donnait ?

    Starec

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    arf... je ne sais pas me servir d'un debug.print.

    mais ma requête fonctionne parfaitement dans QBE
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Ce n'est pas parceque ta requête fonctionne avec le QBE, que cela est valable dans le VBA.
    En effet, tu as éclaté ta requête par concaténation, hors es-tu sûr que tous les espaces sont respectés, qu'il n'y en a pas en double, etc .. ?

    pour le debug.print, écris:

    aprés ta requête, et ensuite ouvre la fenêtre execution Ctrl + G et tu verras s'ouvrir dans l'éditeur VB une autre fenêtre qui te donnera ton SQL.

    Starec

  5. #5
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    Je viens de vérifier rapidement le SQL ... je n'ai pas repéré d'anomalie grossière...
    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
    30
    31
    32
    33
     
    SELECT catalog_sbu.idcode_access, catalog_sbu.code, reftache.idreftache_access, reftache.nomreftache, reftache.loi_calcul_idloi_calcul
    FROM reftache INNER JOIN 
    				(catalog_sbu INNER JOIN catalog_sbu_has_reftache 
    								ON catalog_sbu.idcode_access = catalog_sbu_has_reftache.catalog_sbu_idcode_access
    				)
    				ON reftache.idreftache_access = catalog_sbu_has_reftache.reftache_idreftache_access
     
    WHERE (([catalog_sbu].[idcode_access] = 12886))
    	AND (((catalog_sbu.idcode_access) Not In 
    						(SELECT catalog_sbu.idcode_access
    							FROM straitant INNER JOIN 
    											((((loi_calcul INNER JOIN reftache 
    															ON loi_calcul.idloi_calcul_access = reftache.loi_calcul_idloi_calcul
    												)
    												INNER JOIN straitant_has_loi_calcul 
    															ON loi_calcul.idloi_calcul_access = straitant_has_loi_calcul.loi_calcul_idloi_calcul
    											   )
    											  INNER JOIN (catalog_sbu INNER JOIN catalog_sbu_has_reftache 
    																			ON catalog_sbu.idcode_access = catalog_sbu_has_reftache.catalog_sbu_idcode_access
    														  )
    														 ON reftache.idreftache_access = catalog_sbu_has_reftache.reftache_idreftache_access
    											  )
    											INNER JOIN couttache 
    														ON reftache.idreftache_access = couttache.reftache_idreftache_access
    											) 
    											ON (straitant.idstraitant_access = straitant_has_loi_calcul.straitant_idstraitant_access) 
    												AND (straitant.idstraitant_access = couttache.straitant_idstraitant_access)
    							WHERE catalog_sbu.idcode_access = 12886
    						)
    		  ) 
    		  AND ((reftache.loi_calcul_idloi_calcul) Is Not Null)
    		) ;


    Je serai toi, j'essaierai une requete simpliste pour voir si le problème vient bien de la requête.

    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me!sf.form.recordSource = "SELECT * FROM reftache"
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  6. #6
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    En effet, dans le debug.print il y avait bien des espaces en double.
    je les ai supprimés, mais j'ai toujours le même message d'erreur
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  7. #7
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    mout1234, tu as raison, ça ne fonctionne pas avec une requête toute simple.

    j'ai toujours ce message d'erreur. je ne comprends vraiment pas

    je me demande si ça ne vient pas des propriétés du formulaire.

    j'ai l'impression que ça ne lui plait pas d'avoir pour source à son chargement une requête.

    le problème, c'est que si je mets une table, je n'ai pas les bons champs d'affichés.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  8. #8
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 337
    Points : 188
    Points
    188
    Par défaut
    bon bah... g trouvé une "solution" :

    j'ai réussi à appliquer un filtre sur ma requête.

    je ne suis pas convaincue d'avoir bien fait, mais bon. ça fonctionne.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.

  9. #9
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par mouaa
    bon bah... g trouvé une "solution" :

    j'ai réussi à appliquer un filtre sur ma requête.

    je ne suis pas convaincue d'avoir bien fait, mais bon. ça fonctionne.

    Tant que ça marche... pense à cliquer sur


    Bon dev
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/07/2014, 10h52
  2. Changement de message d'erreur
    Par doremifaso dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/06/2008, 19h50
  3. Réponses: 3
    Dernier message: 29/12/2007, 23h39
  4. Réponses: 13
    Dernier message: 14/02/2006, 17h45

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