Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2010, 12h03   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 1
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 1
Points : 0
Points : 0
Par défaut Problème procédure stockée sur un report

Bonjour,


Je débute dans le monde des reports développés sous SQL-Server Business Intelligence Development Dtudio et je dois utiliser une procédure stockée.
Lorsque j'exécute cette procédure sous SQL-Server elle me renvoie bien tous les résultats désirés cependant lorsque je la transfers dans une datasource de mon report elle ne me renvoie plus que la première ligne.

Quelqu'un a-t-il déjà rencontré ce probleme ?
Avez-vous une idée ?

Je vous mets à la suite le code de la procédure :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DECLARE @item VARCHAR(30) 
DECLARE art_cr CURSOR FOR
 
SELECT itemid  FROM inventtable  WHERE  inventtable.dataareaid = 'mch' AND inventtable.itemtype = 1; 
 
OPEN art_cr 
 
FETCH NEXT FROM art_cr INTO @item 
 
WHILE @@FETCH_STATUS >=  0 
BEGIN
 
SELECT        itemid, routeid, todate, name, active
                              FROM            routeversion
                              WHERE        routeversion.dataareaid = 'mch' AND routeversion.itemid = @item; 
 
FETCH NEXT FROM art_cr INTO @item 
 
END 
 
CLOSE art_cr 
DEALLOCATE art_cr
Merci d'avance.
jonnix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 12h21   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
bonjour


pourquoi passer par un curseur pour faire ca ?

en fait ce n'est pas que la procédure vous renvoi que la première ligne, mais c'est qu'elle vous renvoi un recordset pour chaque ligne, car vous faites une requete a chaque fois.
transformez cela en une seule requete, ca sera beaucoup plus rapide en plus :

Code sql :
1
2
3
4
5
6
7
 
SELECT itemid, routeid, todate, name, active
FROM inventtable 
INNER JOIN routeversion ON routeversion.itemid = inventtable.itemid
WHERE inventtable.dataareaid = 'mch' 
AND inventtable.itemtype = 1
AND routeversion.dataareaid = 'mch'

par contre, pourquoi avez vous la colonne datareaid dans vos deux tables ?
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h01.


 
 
 
 
Partenaires

Hébergement Web