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

ASP Discussion :

[ASP3] Impossible de trouver l'objet dans la collection corr


Sujet :

ASP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [ASP3] Impossible de trouver l'objet dans la collection corr
    Bonjour le forum,

    J'ai créé un formulaire HTML qui demande un numéro de matricule, un login et un mot de passe.

    Quand ces trois éléments sont introduit, une page asp en relation avec une base de donnée Access doit authentifier le visiteur.

    Lorsque le visiteur n'est pas autorisé, il reçoit un message lui disant qu'il ne peut pas accéder au contenu du site (ce qui est normal).

    Par contre, quand les 3 éléments sont bon, j'obtiens ce message :

    ADODB.Recordset erreur '800a0cc1'

    Impossible de trouver l'objet dans la collection correspondant au nom ou à la référence ordinale demandé.

    /delibes/authentification.asp, ligne 22
    Remarque importante : quand je met en ligne 22

    [b]Response.Write "Bienvenue :"
    ça fonctionne, il refuse donc mon rst(nomduchamps)

    Voici mon code asp, la ligne 22 est en gras :


    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
    <%
    	dim cnn
    	dim rst
     
    	Set cnn = Server.CreateObject("ADODB.Connection")
    	Set rst = Server.CreateObject("ADODB.Recordset")
    	cnn.Open "DSN=delibes"
     
    	' Construction de la chaîne SQL
    	strSQL = "SELECT [matricule] FROM [tblauthentification]"
     
    	' Filtre sur les valeurs fournies par le visiteur
    	strSQL = strSQL & " WHERE matricule='" & Request.Form("txtmatricule") & "'"
    	strSQL = strSQL & " AND [login]='" & Request.Form("txtlogin") & "'"
    	strSQL = strSQL & " AND [mdp]='" & Request.Form("txtmdp") & "'"
    	rst.Open strSQL, cnn
     
    	' A-t-on trouvé un adhérent ?
    	If rst.EOF Then
    		Response.Write "Accès non autorisé. Vérifiez votre identifiant et votre mot de passe."
    	Else	
    		[b]Response.Write "Bienvenue :" & rst("nomcomplet")[/b]
     
    	End If
     
    	rst.Close
    	Set rst = Nothing
    	Set cnn = Nothing
    %>
    Ma base de donnée est composée d'une table (pour le moment) les champs sont login, mdp, matricule et nomcomplet.

    Est-ce que vous voyez quelque chose qui ne fonctionne pas ?

    Merci d'avance.

    bgs

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [b]Response.Write "Bienvenue :" & rst("nomcomplet")[/b]
    nomcomplet vient d'où ? Il n'est pas dans ton select !

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par pc75
    Bonjour,

    Quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [b]Response.Write "Bienvenue :" & rst("nomcomplet")[/b]
    nomcomplet vient d'où ? Il n'est pas dans ton select !
    Bonjour

    Merci pour ta réponse.

    "nomcomplet" est un champ de ma table.

    J'ai le même problème si je met "matricule" ou "login".

    Qu'en penses-tu ?

    Ne devrais-je pas mettre quelque chose dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.open select * from [tblauthentification];
    :

    Merci encore.

    bgs[/code]

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Peux-tu essayer avec ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Response.Write "Bienvenue :" & rst(0)

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut,

    En mettant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Write "Bienvenue :" & rst(0)
    J'obtiens le même message d'erreur.

    Merci pour ton aide.

    Je continue à chercher.

    bgs

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Fais un response.write de strSQL et essaie de l'éxécuter directement dans Access, et donne nous le résultat.

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par pc75
    Re,

    Fais un response.write de strSQL et essaie de l'éxécuter directement dans Access, et donne nous le résultat.
    Salut pc75,

    Merci beaucoup pour ton aide et tes nombreuses réponses.

    Quand tu me dis :

    Fais un response.write de strSQL
    Je fais ça dans ma page asp ?

    et essaie de l'éxécuter directement dans Access
    Comment ?

    Vraiment désolé mais je suis débutant en asp 3.

    Merci encore.

    bgs

  8. #8
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    la requête "SELECT [matricule]"
    indique que la projection (l'ensemble des champs renvoyé par la requête) ne contient que le champs matricule
    par concéquant le résultat le contient que le champs "matricule", tu ne peut utiliser autre chose que le champ ""matricule!
    il faut rajouter dans la projection de la requête la totalité des champs utilisés.
    2 maniére :
    Select monChamp1, monChamp2, ...., monChampn From MaTable
    Ou encore
    Select * From MaTable
    Ceci renvoi la totalité des champs
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  9. #9
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Dans ta page ASP, juste après ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       ' Filtre sur les valeurs fournies par le visiteur 
       strSQL = strSQL & " WHERE matricule='" & Request.Form("txtmatricule") & "'" 
       strSQL = strSQL & " AND [login]='" & Request.Form("txtlogin") & "'" 
       strSQL = strSQL & " AND [mdp]='" & Request.Form("txtmdp") & "'"
    Tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    response.write strSQL
    Ton navigateur affichera le texte de la requête. Tu la sélectionnes et tu fais un copier.

    Tu ouvres Access, tu choisis l'onglet "Requêtes", puis l'option "Créer une requête en mode création".
    Dans la fenêtre "Ajouter une table", tu choisis "Fermer".
    Dans la barre d'outils, tu cliques sur le bouton "SQL" et tu colles la requête que tu as copiée précédemment.
    Exécute la et dis nous le résultat.

  10. #10
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut pc75,

    Merci beaucoup pour ta réponse et ta patience.

    J'ai fais ce que tu m'as dis, voici déjà le résultat de

    response.write strSQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [matricule] FROM [tblauthentification] WHERE matricule='123456' AND [login]='mvd' AND [mdp]='mvd'
    et voici le résultat en Access :

    123456
    Qu'en penses-tu ?

    Merci encore.

    bgs

  11. #11
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    C'est bien ce que j'expliquais dans mon poste.
    La projection de ta requête ne contient qu'un seule champ
    Il faut remplacer
    strSQL = "SELECT [matricule] FROM [tblauthentification]"
    par par exemple
    strSQL = "SELECT * FROM [tblauthentification]"

    ainsi on rajoute l'ensembles des champs de la table tblauthentification dans la projection


    Cordialement
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  12. #12
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par Cpas2latarte
    C'est bien ce que j'expliquais dans mon poste.
    La projection de ta requête ne contient qu'un seule champ
    Il faut remplacer
    strSQL = "SELECT [matricule] FROM [tblauthentification]"
    par par exemple
    strSQL = "SELECT * FROM [tblauthentification]"

    ainsi on rajoute l'ensembles des champs de la table tblauthentification dans la projection


    Cordialement
    Bonjour Cpas2latarte,

    Désolé, je n'avais pas vu que tu avais posté une réponse.

    Je vais essayer comme tu dis et je vous dis quoi.

    Merci beaucoup !

    bgs

  13. #13
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    C'est louche !
    Tu veux tenter comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Set rst = Server.CreateObject("ADODB.Recordset")
       ' Construction de la chaîne SQL 
       strSQL = "SELECT matricule FROM tblauthentification" 
       ' Filtre sur les valeurs fournies par le visiteur 
       strSQL = strSQL & " WHERE matricule='" & Request.Form("txtmatricule") & "'" 
       strSQL = strSQL & " AND [login]='" & Request.Form("txtlogin") & "'" 
       strSQL = strSQL & " AND [mdp]='" & Request.Form("txtmdp") & "'" 
    rst.open strSQL, "delibes"
    response.write "*** " & rst("matricule") & " ***"
    rst.close
    set rst = Nothing

  14. #14
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-bonjour pc75 et Cpas2latarte,

    Avec ce 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
    27
    28
    29
    30
    31
    <%
    	dim cnn
    	dim rst
     
    	Set cnn = Server.CreateObject("ADODB.Connection")
    	Set rst = Server.CreateObject("ADODB.Recordset")
    	cnn.Open "DSN=delibes"
     
    	' Construction de la chaîne SQL
    	strSQL = "SELECT * FROM [tblauthentification]" 
     
     
    	' Filtre sur les valeurs fournies par le visiteur
    	strSQL = strSQL & " WHERE matricule='" & Request.Form("txtmatricule") & "'"
    	strSQL = strSQL & " AND [login]='" & Request.Form("txtlogin") & "'"
    	strSQL = strSQL & " AND [mdp]='" & Request.Form("txtmdp") & "'"
     
    	rst.Open strSQL, cnn
     
    	' A-t-on trouvé un adhérent ?
    	If rst.EOF Then
    		Response.Write "Accès non autorisé. Vérifiez votre identifiant et votre mot de passe."
    	Else	
    		Response.Write "Bienvenue :" & rst("nomcomplet")
     
    	End If
     
    	rst.Close
    	Set rst = Nothing
    	Set cnn = Nothing
    %>
    ça fonctionne !!!

    Un super grand merci à vous deux !

    Ce n'est malheureusement que le début de mon projet, vous me reverrez sans doute sur ce forum.

    Une très bonne journée à vous tous.

    bgs

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/11/2014, 17h41
  2. .Filter sur ADODB : Impossible de trouver l'objet dans la connexion
    Par kelvir dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/09/2011, 08h00
  3. Réponses: 1
    Dernier message: 18/06/2010, 16h58
  4. impossible de trouver l'erreur dans cette requete
    Par laurent.w dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2007, 10h38
  5. impossible de trouver l'erreur dans cette requete
    Par laurent.w dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 05/01/2007, 15h57

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