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

Requêtes et SQL. Discussion :

erreur requète SQL : trop peu de paramètres


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 48
    Points
    48
    Par défaut erreur requète SQL : trop peu de paramètres
    Voila j'ai 2 questions. J'ai bien essayé de trouver dans la faq et dans le forum mais aucune des réponses ne me convenait.

    Premiere question :
    J'ai une erreur : "trop peu de paramètre attendu" qunad je fait un select qui ne renvoie pas d'enregistrements". Mais c'est justement ce que je veux ! (si mon select ne renvoie pas d'enregistrements, je veux que cela fasse quelque chose).

    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
     
    Dim db As DAO.Database
        Dim SQL As String
        Dim rst As DAO.Recordset
        'connexion à la base
            Set db = DBEngine.OpenDatabase(CurrentProject.Path & "\Gestion Incidents.mdb")
            'on regarde si le type d'incident n'est pas utilisé par un incident
            'SQL = "select nomType from TypeIncident where "
            'SQL = SQL & "nomType in (select nomType from Incident where nomType = '" & nomType.Value & "')"
            SQL = "select nomType from Incident where nomType = '" & nomType.Value & "'"
            MsgBox SQL
            Set rst = db.OpenRecordset(SQL)
            If IsNull(rst.Fields(0)) = False Then
                MsgBox "Il y a des incidents qui sont du type d'incident que vous essayez de supprimer. Vous ne pouvez donc pas supprimer ce type d'incident."
                MsgBox rst.Fields(0)
                rst.Close
            Else
    2e question : comme vous avez peut être pu voir, j'ai une requète en commentaire dans mon code précédent. C'est celle que je veux utiliser : je veux une requète qui cherche tous les enregistrements d'une table qui sont aussi dans une autre table. Est ce que ce n'est pas ça ? : "select nomType from TypeIncident where nomType in (select nomType from Incident where nomType = '" & nomType.value & "')". Cette requète me renvoie quand même un enregistrement et je comprend pas trop pourquoi.

    Merci d'avance pour vos réponses

  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
    Bonjour,

    Pour ta première question :
    Pour tester si un Recordset est vide, tu devrais plutôt utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if Not(Rs.Bof) then 
    ' Action si pas d'enregistrement
    end if
    Pour ta deuxieème question : pourquoi ne pas faire une requête sélection entre tes 2 table du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select nomType From TypeIncident  Inner Join Incident On TypeIncident.MonType = Incident.nomType Where nomType = '" & ValeurRecherche & "'"
    SQL à valider, je les tapez comme ça

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    2e question résolue : J'ai voulu faire ce type de requète dans un souci d'optimisation. Mais la tienne a l'air de mieux marcher. Merci.

    Par contre pour ma premiere question, le problème n'est pas dans mon test, c'est que ça me met directement un message d'erreur lors de l'execution du recordset (lorsque celui ci est nul, s'il n'est pas nul ça marche).

    message d'erreur : erreur d'execution 3061 : trop peu de paramètres. 1 attendu.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 150
    Points : 169
    Points
    169
    Par défaut
    salut,

    quand tu dis
    le problème n'est pas dans mon test, c'est que ça me met directement un message d'erreur lors de l'execution du recordset (lorsque celui ci est nul, s'il n'est pas nul ça marche)
    c'est pas plutôt quand nomType.Value est null que tu as un message d'erreur ?
    si oui remplace par
    Nz(nomType.Value,"*")

    @+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    non ce n'est pas qunad nomType.value est null. C'est quand la requète ne renvoie aucun enregistrement.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 64
    Points : 48
    Points
    48
    Par défaut
    C'est bon j'ai trouvé. D'ailleurs je me hais de ne pas l'avoir vu plus tôt :
    - mon champs dand ma table Incident ne s'appelait pas nomType mais typeIncident... -_- ah je me hais je me hais je me hais. Et ensuite il faut bien mettre if not(rst.BOF) au lieu de ce que j'avais mis (mais ça je pouvais pas le savoir avant.

    Merci à tous.

    Où c'est qu'on met résolu ?

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 150
    Points : 169
    Points
    169
    Par défaut
    donc dans ce cas c'est bien sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(rst.Fields(0)) = False Then
    que se produit l'erreur ?

    c'est normal, il n'y a pas d'enregistrement or tu cherche à lire le champ(0) de la 1ère ligne qui n'existe pas ...
    il te faut faire le test sur la présence au moins d'un enregistrement (cf. MacGiver)

    par ex en écrivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if rst.recordcount>0 then
               MsgBox "Il y a des incidents qui sont du type d'incident(...)

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 150
    Points : 169
    Points
    169
    Par défaut
    donc rien à voir avec le fait que la requête ne renvoi aucun enregistrement.
    Si le champ n'existe pas la requête n'a jamais pu te renvoyer d'enregistrement

    @+

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

Discussions similaires

  1. Requête générant une erreur 3061 (trop peu de paramètres)
    Par jad22t dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/11/2014, 16h24
  2. [AC-2007] Erreur ouverture recorset "Trop peu de paramètres"
    Par lio33 dans le forum VBA Access
    Réponses: 6
    Dernier message: 03/12/2010, 12h10
  3. [AC-2007] SQL : Trop peu de paramètres
    Par oOXimOo dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/06/2010, 22h34
  4. erreur :Trop peu de paramètres, C'est koi??
    Par nickg dans le forum ASP
    Réponses: 18
    Dernier message: 06/01/2006, 15h59
  5. erreur trop peu de paramétre. un attendu ??
    Par Amandine62 dans le forum ASP
    Réponses: 3
    Dernier message: 25/01/2005, 15h00

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