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 :

Erreur requete en VBA


Sujet :

Access

  1. #1
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut Erreur requete en VBA
    Salut à tous !

    J'ai un problème avec un code VBA pour mon appli de vidéothèque...

    Tout d'abord, pour la requete en question, j'utilise les tables :

    VIDEO(#NUM_VIDEO, *NUM_SUPPORT, *NUM_GENRE, *NUM_PROPRIETAIRE, TITRE_VIDEO, DUREE_VIDEO, DESCRIPTION_VIDEO, COMMENTAIRE_VIDEO, JAQUETTE_VIDEO, NOTE_MOYENNE_VIDEO)

    REALISER(#NUM_VIDEO, #NUM_REALISATEUR, ANNEE_REALISATION)

    Le problème en question vient du code suivant :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    On Error GoTo erreur
          
        Dim cnn As ADODB.Connection
        Dim rcs As ADODB.Recordset
        Dim req As String
    
        Set cnn = CurrentProject.Connection
        Set rcs = New ADODB.Recordset
        
        req = "SELECT VIDEO.NUM_VIDEO, VIDEO.NUM_SUPPORT, VIDEO.NUM_GENRE, VIDEO.NUM_PROPRIETAIRE, VIDEO.TITRE_VIDEO, REALISER.NUM_REALISATEUR, "
        req = req + " REALISER.ANNEE_REALISATION, VIDEO.DUREE_VIDEO, VIDEO.DESCRIPTION_VIDEO, VIDEO.COMMENTAIRE_VIDEO, VIDEO.JAQUETTE_VIDEO, VIDEO.NOTE_MOYENNE_VIDEO "
        req = req + "FROM VIDEO, REALISER "
        req = req + "WHERE VIDEO.NUM_VIDEO="
        req = req + Me.txtRechercheTitre.Column(0) + " "
        req = req + "AND REALISER.NUM_VIDEO=VIDEO.NUM_VIDEO;"
        MsgBox req
        rcs.Open req, cnn, adOpenDynamic, adLockOptimistic
        
        If Not rcs.EOF Then
            rcs.MoveFirst
        End If
       
        Do While Not rcs.EOF
            MsgBox rcs.Fields("NUM_VIDEO")
            txtNumVideo = rcs.Fields("NUM_VIDEO")
            txtNumSupport = rcs.Fields("NUM_SUPPORT")
            txtNumGenre = rcs.Fields("NUM_GENRE")
            txtNumProprietaire = rcs.Fields("NUM_PROPRIETAIRE")
            txtTitreVideo = rcs.Fields("TITRE_VIDEO")
            txtNumRealisateur = rcs.Fields("NUM_REALISATEUR")
            txtAnneeRealisation = rcs.Fields("ANNEE_REALISATION")
            txtDureeVideo = rcs.Fields("DUREE_VIDEO")
            txtDescriptionVideo = rcs.Fields("DESCRIPTION_VIDEO")
            txtCommentaireVideo = rcs.Fields("COMMENTAIRE_VIDEO")
            txtJaquetteVideo = rcs.Fields("JAQUETTE_VIDEO")
            txtNoteMoyenneVideo = rcs.Fields("NOTE_MOYENNE_VIDEO")
            txtJaquetteVideo_LostFocus ' pour afficher la jaquette
            rcs.MoveNext
        Loop
        rcs.Close
        cnn.Close
    Exit Sub
    erreur:
        MsgBox "erreur " & Err.Number & " : " & Err.Description, vbCritical
        Exit Sub
    End Sub
    Le problème vient de la ligne en rouge. Le msgbox juste au dessus de cette ligne s'affiche bien. Si je commente cette ligne qui ne fonctionne pas, tout ce qui suit fonctionne. C'est juste cette ligne la.

    J'ai affiché ma requete par msgbox, elle a l'air correcte :

    SELECT VIDEO.NUM_VIDEO, VIDEO.NUM_SUPPORT, VIDEO.NUM_GENRE, VIDEO.NUM_PROPRIETAIRE, VIDEO.TITRE_VIDEO, REALISER.NUM_REALISATEUR, REALISER.ANNEE_REALISATION, VIDEO.DUREE_VIDEO, VIDEO.DESCRIPTION_VIDEO, VIDEO.COMMENTAIRE_VIDEO, VIDEO.JAQUETTE_VIDEO, VIDEO.NOTE_MOYENNE_VIDEO
    FROM VIDEO, REALISER WHERE VIDEO.NUM_VIDEO=7 AND REALISER.NUM_VIDEO=VIDEO.NUM_VIDEO;
    J'en arrive a l'erreur obtenue :

    erreur : -2147352567 Les enregistrements dans la table 'REALISER' ne devraient pas de trouver du côté 'un'
    Je comprends pas ce qui fait planter le truc.

    Si vous pouviez apporter un regard nouveau sur mon code pour m'éclairer sur le problème, ce serait sympa

    D'avancer merci

    temar

  2. #2
    Membre actif Avatar de zEndymion
    Homme Profil pro
    Responsable des applications
    Inscrit en
    Avril 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2006
    Messages : 162
    Points : 203
    Points
    203
    Par défaut
    Slt,

    Dans ton From ne manquerai t'il pas un Inner Join :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FROM VIDEO INNER JOIN REALISER ON VIDEO.NUM_VIDEO = REALISER.NUM_VIDEO

  3. #3
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Je fais remonter un peu le topic, car je n'ai toujours pas trouvé la solution...
    Quelqu'un pour m'aider please ?

  4. #4
    Membre actif Avatar de zEndymion
    Homme Profil pro
    Responsable des applications
    Inscrit en
    Avril 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2006
    Messages : 162
    Points : 203
    Points
    203
    Par défaut
    As tu essayer en changant ton From ?

  5. #5
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Désolé, on a posté en meme temps, donc j'ai pas vu ta réponse

    Je viens d'essayer en changeant le FROM, mais ça ne change rien. D'ailleurs, je crois qu'en mettant INNER JOIN comme tu le suggères ou
    AND REALISER.NUM_VIDEO=VIDEO.NUM_VIDEO
    comme je l'avais fait, il me semble que c'est la meme chose.

  6. #6
    mat.M
    Invité(e)
    Par défaut
    Le # de #NUM_VIDEO c'est une clé primaire ?
    La jointure ne peut pas faire car sur réalisateur tu déclares une double-clé alors que sur vidéo il n'y en a qu'une seule.
    Je pense que le pb vient de là.

    Astuce : utiliser & et non + pour les concaténations :
    Dim requeteSQL As String
    requeteSQL="Select auteur,titre"
    requeteSQL=requeteSQL & "FROM video"

  7. #7
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par mat.M
    Le # de #NUM_VIDEO c'est une clé primaire ?
    oui, c'est la notation que j'utilisais en DUT
    et * pour les clés étrangères

    Citation Envoyé par mat.M
    La jointure ne peut pas faire car sur réalisateur tu déclares une double-clé alors que sur vidéo il n'y en a qu'une seule.
    Je pense que le pb vient de là.
    Et ya pas de solution ?


    Citation Envoyé par mat.M
    Astuce : utiliser & et non + pour les concaténations :
    Ca change quoi ?

  8. #8
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut

  9. #9
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par mat.M
    La jointure ne peut pas faire car sur réalisateur tu déclares une double-clé alors que sur vidéo il n'y en a qu'une seule.
    Je pense que le pb vient de là.

    Je viens de réagir : lorsque je teste ma requête directement dans Access, elle fonctionne, alors pourquoi sous VBA la jointure passerait pas ?

  10. #10
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    A priori, le problème ne vient pas de la requete, puisque à la place de mon

    txtNumVideo = rcs.Fields("NUM_VIDEO")
    qui ne fonctionne pas, j'ai essayé de mettre

    lblTest.Caption = rcs.Fields("NUM_VIDEO")

    Avec lblTest un label, et ça fonctionne correctement.

    Cependant, après, j'ai essayé de rebalancé la valeur de mon label dans ma txtbox

    txtNumVideo = lblTest.Caption
    et ça me donne la meme erreur qu'avant...
    Donc le problème viendrait de mon champ txtNumVideo ?
    J'ai regardé dans ses propriétés, mais rien ne m'a semblé bizarre...

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    txtNumVideo est un champ lié ?

    Pour le '+' la différence entre + et & est avec les nombres si access à "1" + "2" il donne 3 alors que "1" & "2" donne "12".

    A+

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    le champ txtNumVideo est basé sur quel champ de table?
    Est-il indexé sans doublon?

    Met le commentaire pour voir s'il c'est le seul qui se comporte comme ca

  13. #13
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par DMboup
    le champ txtNumVideo est basé sur quel champ de table?
    Est-il indexé sans doublon?
    Il est basé sur le champ NUM_VIDEO de la table VIDEO et il est bien indexé sans doublon.

    Citation Envoyé par DMboup
    Met le commentaire pour voir s'il c'est le seul qui se comporte comme ca
    Je l'avais déja fait pour etre sûr que le problème venait bien de la. Je viens de vérifier au cas où, mais pas de miracle. Cela fonctionne bien pour les autres champs quand je mets celui la en commentaire...

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par temar
    Il est basé sur le champ NUM_VIDEO de la table VIDEO et il est bien indexé sans doublon.
    C'est donc normal qu'il refuse une valeur existante dans la table.

    Pour ajoute un autre champ dans ta table txtNumVideo2 (qui accepte les doublons) et remplace le dans le code.

    NB: Apparement tu rempli les champs d'un formulaire. Sur quelle source est basée ce formulaire?

  15. #15
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Le formulaire est basé sur une requête de sélection sur 2 tables (Video et realiser)

    Sinon, tu as raison, j'ai essayé avec une autre txtbox, et cela fonctionne...

    Je suis donc obligé de modifier ma table pour accepter les doublons ?

  16. #16
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par marot_r
    txtNumVideo est un champ lié ?

    Pour le '+' la différence entre + et & est avec les nombres si access à "1" + "2" il donne 3 alors que "1" & "2" donne "12".

    A+
    Ah ok, merci pour l'astuce

    Sinon, oui txtNumVideo est lié au champ NUM_VIDEO de la table video...

    Sinon, ben merci pour le coup de main

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

Discussions similaires

  1. Erreur requete SQL SELECT en VBA
    Par comewithme dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/12/2012, 15h36
  2. Erreur Requete en VBA
    Par Kalvin_20 dans le forum VBA Access
    Réponses: 9
    Dernier message: 06/05/2008, 16h09
  3. Erreur requete en vba
    Par Renardo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 30/01/2007, 23h17
  4. erreur inconnue en VBA
    Par rapace dans le forum Access
    Réponses: 3
    Dernier message: 06/10/2005, 15h42
  5. [debutante] erreur requete update
    Par LineLe dans le forum ASP
    Réponses: 5
    Dernier message: 12/09/2003, 14h05

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