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 :

Mettre une requete SQL dans une fonction


Sujet :

ASP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Mettre une requete SQL dans une fonction
    Bonjour,

    J'aimerais écrire une fonction qui execute une requete passée en argument.
    L'objectif c'est d'éviter de réécrire à chaque fois les chaines de connexion.

    Ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <%
    function ExecuteSqlServer(sql) ' Pour les requêtes de sélection
     
    	dim SqlConn : set SqlConn = Server.CreateObject("ADODB.Connection")
    	SqlConn.Open Application("DataBase"), Application("DBLogin"), Application("DBPwd")
    	dim rs : set rs = Server.CreateObject("ADODB.Recordset")
    	rs.Open sql, SqlConn, 3, 1 ' adOpenStatic, adLockReadOnly
    	ExecuteSqlServer = rs
    end function
     
    %>
    Ensuite j'appelle la fonction depuis la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim MonRS2
     
    sSQL = "SELECT * FROM mabase;"
    set MonRS2= ExecuteSqlServer(sSQl)
    While not (rsMonRS2.eof OR MonRS2.Bof)
    	Response.Write MonRS2("Nom") & "<br>" & vbcrlf
    	MonRS2.MoveNext
    Wend
    MonRS2.Close
    Set MonRS2= Nothing
    Mais voila que j'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur d'exécution Microsoft VBScript error '800a01b6' 
     
    Cet objet ne gère pas cette propriété ou cette méthode: 'EOF'
    Je ne peux plus utiliser EOF, BOF, recordcount...

    Une idée ? Peut être qu'on ne peut tout simplement pas faire ça... (mais manifestement c'est possible en .net)
    Je n'y connais rien, je poste histoire de m'instruire....

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 166
    Points : 189
    Points
    189
    Par défaut
    Déjà ça m'étonne qu'il ne rale pas si lors du renvoi d'un objet par ta fonction tu n'emploies pas le mot clef set :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function ExecuteSqlServer(sql) ' Pour les requêtes de sélection
     
    	dim SqlConn : set SqlConn = Server.CreateObject("ADODB.Connection")
    	SqlConn.Open Application("DataBase"), Application("DBLogin"), Application("DBPwd")
    	dim rs : set rs = Server.CreateObject("ADODB.Recordset")
    	rs.Open sql, SqlConn, 3, 1 ' adOpenStatic, adLockReadOnly
    	set  ExecuteSqlServer = rs
    end function
    Ensuite peut être qu'avec le test rs.bof en moins ça marcherait mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    While not (rsMonRS2.eof)
    ......
    Wend
    Enfin une dernière idée : déclarer explicitement dans le code que c'est un objet recordset qu'on va alimenter avec une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim MonRS2 : set MonRS2 = Server.CreateObject("ADODB.Recordset")
    .....
    set MonRS2= ExecuteSqlServer(sSQl)
    ...

  3. #3
    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,

    Autre chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    set MonRS2= ExecuteSqlServer(sSQl)
    While not (rsMonRS2.eof OR MonRS2.Bof)
    Tu initialises MonRS2
    et tu testes rsMonRS2

    Y a pas un truc là ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos conseils, ca marche !!!
    Je n'y connais rien, je poste histoire de m'instruire....

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

Discussions similaires

  1. extraire le jour dans une requete sql dans une colone de type date
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 17/04/2011, 21h42
  2. Réponses: 2
    Dernier message: 22/06/2006, 11h26
  3. Réponses: 3
    Dernier message: 17/06/2006, 23h15
  4. Mettre une condition if dans une requete sql
    Par Sardonnen dans le forum Oracle
    Réponses: 4
    Dernier message: 24/03/2006, 11h25
  5. Importer valeur requete SQL dans une Requete
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/03/2006, 14h24

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