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 :

Requete Sql imbriqué


Sujet :

ASP

  1. #1
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut Requete Sql imbriqué
    Salut tout le monde ,
    j'ai repris une appli qui tournait sur access , je l'ai migré sur sql server , j'utilise un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set cmd = createObject("ADODB.Command")
    pour mes requetes avec access cela fonctionnait parfaitement , d'une maniere differente , actuellement j'utilise un seul objet command ( variable cmd) auquel j'alloue les differentes requetes et plusieurs recordet qui font les boucles etc...

    pour la 1ere requete c'est ok des que je mets la seconde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Microsoft VBScript runtime (0x800A01A8)
    Object required

    mouais donc j'ai creer une seconde instance de adobd.command mais meme resultat , une idée ?

  2. #2
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    perso moi je fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set RS = server.CreateObject("ADODB.RecordSet")
    sql = "select STOCK_VPC.*, STOCK_DEPART+STOCK_ACHATS-(STOCK_JANVIER+STOCK_FEVRIER+STOCK_MARS+STOCK_AVRIL+STOCK_MAI+STOCK_JUIN+STOCK_JUILLET+STOCK_AOUT+STOCK_SEPTEMBRE+STOCK_OCTOBRE+STOCK_NOVEMBRE+STOCK_DECEMBRE) as TOTAL from STOCK_VPC order by CODE_PRODUIT"
    RS.open sql, connex

  3. #3
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Salut oluha et merci pour cette réponse rapide , je faisais aussi comme ça, mais c'est pareil et même plus simple d 'utiliser .commandText ... enfin


    tout ça pour dire que ta solution ou la mienne donne le meme resultat , pour y voir plus clair j'ai fais un et typiquement il s'arrete a le seconde iteration de la seconde requete ... c'est sur que ça vient du recordset ...

  4. #4
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    tu utilises le même RS pour tes 2 requêtes ?

  5. #5
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Les recordset sont differents ( ce qui est normal ) le set cmd = createObject("ADODB.Command") est le meme ...

  6. #6
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    je connais pas le command, je peux pas t'aider à ce sujet

  7. #7
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Salut,

    Tu passes ta commande en variable globale et non locale. Il faut la déclarer en dehors de ta procedure.

    A+

  8. #8
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    comme son nom l 'indique voila la procedure qui se connecte a la db
    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
     
    sub openDB()
     
    set cmd = createObject("ADODB.Command")
    set cnn = createObject("ADODB.Connection")
     
     
    sCmd= "driver={SQL Server};" & _
    	"Provider=sqloledb;" & _
    	"Data Source=une_source;" & _
    	"Initial Catalog=un_catalogue;" & _
      	"User Id=un_id;" & _
       	"Password=un_password"
     
    cnn.Open sCmd
     
    cmd.ActiveConnection = cnn
     
    end sub

    ensuite je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    call opendb()
     
    call mesrequtesimbriquées()
    voila un extrait de code de la procedure mesrequestesimbriquées :


    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
     
    sub mesrequestesimbriquées  () 
    set rs_1  = createObject("ADODB.Recordset")
    set rs_2     = createObject("ADODB.Recordset")
     
    cmd.commandText = "SELECT DISTINCT untruc FROM latable"
     
    rs_1.open cmd
     
    if not ...
    do while ...
     
    ' imbrication...
     
    	cmd.commandText = "SELECT DISTINCT unautretruc FROM latable WHERE untruc='" & rs_1(0) & "'"  
    	rs_2.open cmd
    if not ...
    'traitement
     
    'boucle
     
    rs_2.movenext
    loop
    rs_2.close
     
     
    rs1.movenext
     
    ...
     
    end sub

    donc voila tu me dis de mettre en global set cmd = createObject("ADODB.Command") ? ça n'a pas l'air de fonctionner ...

  9. #9
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Non,

    Tu mets
    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
     
    Dim cmd
    Dim cnn
    Dim sCmd
     
    sub openDB()
     
    set cmd = createObject("ADODB.Command")
    set cnn = createObject("ADODB.Connection")
     
     
    sCmd= "driver={SQL Server};" & _
    	"Provider=sqloledb;" & _
    	"Data Source=une_source;" & _
    	"Initial Catalog=un_catalogue;" & _
      	"User Id=un_id;" & _
       	"Password=un_password"
     
    cnn.Open sCmd
     
    cmd.ActiveConnection = cnn
     
    end sub
    Comme cela tu peux les utiliser dans chacune de tes procédures et tu detruits tout à la fin de ta page. Inutile d'en créer 36! Tu imagines si tu fais 200 boucles!

    ET NE PAS OUBLIER OPTION EXPLICIT

    A+

  10. #10
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Waip encore moi , aprés avoir mis option explicit et donc la declaration des var ( en global ) et bien j'en reviens au meme probleme que j'ai depuis le debut : ça ne boucle pas ,le recordset s'arrete ...

    je n'utilise plus l'objet commande pour plus de "simplicite"

    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
     
    sql_1 = "SELECT untrcuc FROM unetable"
     
     
    rs_1.open sql_1 , cnt_DB
    if not rs_1.eof then 
     
                do while not rs_1.eof 
                    response.write(rs_1(0))  
     
     
    sql_2 = "SELECT autre_chose FROM unetable WHERE untruc='" & rs_1(0) & "'" 
    				rs_2.open sql_2 , cnt_DB
    				if not rs_2.eof and rs_1(0) <> "" then 
    				do while not rs_2.eof 
    						response.write(...
     
    	               rs_2.movenext 
                   loop
     
                end if
            rs_2.close
            set rs_2 = nothing
     
     
     rs_1.movenext                                                 
        Loop
    end if        
    rs_1.close
    set rs_1 = nothing
    end sub
    au pire est ce que quelqu'un a un exemple de requete imbriquées sur une base sql server , que je regarde ou est le probleme :s

  11. #11
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Oluha : l'objet command est un peu mieux que le simple recordset dans le sens ou c'est plus simple pour pour paramétrer les requêtes ( avec un "?" )


    tuto vbscript ADODB regarde la si tu veux : http://drq.developpez.com/vb/tutoriels/ADO/Chapitre4/


    c'est bon probleme resolu : set rs_2 = nothing

    je ne sais pourquoi il fallait le mettre comme ça :
    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
           rs_2.movenext 
                   loop
     
                end if
            rs_2.close
     
     
     
     rs_1.movenext                                                 
        Loop
    end if        
    rs_1.close
     
     
     
     
    set rs_1 = nothing
    end sub

    Voila donc c'etait bien un probleme de recordset grrr !

  12. #12
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Ah, dslé, j'ai confondu avec procedure imbriquées

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

Discussions similaires

  1. requete SQL (imbriqué?)
    Par leame dans le forum Langage SQL
    Réponses: 9
    Dernier message: 02/07/2010, 14h21
  2. [1.x] Requetes SQL imbriquées
    Par pmithrandir dans le forum Symfony
    Réponses: 1
    Dernier message: 30/12/2009, 21h31
  3. requete sql imbriquée
    Par Ludo75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/07/2008, 12h06
  4. Requetes SQL imbriquées
    Par olibara dans le forum Requêtes
    Réponses: 0
    Dernier message: 25/02/2008, 20h34
  5. requetes sql imbriquées
    Par lesaint972 dans le forum Accès aux données
    Réponses: 5
    Dernier message: 28/08/2007, 16h54

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