cs_sonia1
Messages postés3Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention17 juin 2006
-
17 juin 2006 à 17:48
cs_skweeky
Messages postés259Date d'inscriptionmercredi 3 mai 2006StatutMembreDernière intervention11 janvier 2010
-
10 août 2006 à 20:30
Je fais un programme qui permet de gérer les collections de fèves. L'interface est sous Visual Studio 2005 en vbnet et les données sous SQL SERVER 2005.
J'ai donc une table VRITRINE (numero et nom), une table FEVE(numero et nom), une table COLLECTION (numero et nom), et une table TYPE_COLLECTION (numero et libelle). Une feve appartient a une seule collection, une collection a un seul type de collection et une feve est exposée dans une seule vitrine.
Mon programme se compose de 3 combo box (liste des noms de vitrine, liste des noms de collections, et liste des types). Je veux faire afficher le nom des feves selon le critère demander (nom sélectionné ds une liste). On ne peut emettre qu'un critère.
J'ai fait cette procedure stockée sous sql serveur :
CREATE
PROCEDURE
[dbo]
.
[Recherche]@nom_vitrine
varchar
(
20
),
@nom_collec
varchar
(
50
),
@nom_type
varchar
(
20
)
AS
declare
@nom
varchar
(
20
);
declare
@collec
varchar
(
50
);
declare
@type
varchar
(
20
);
declare
@name
varchar
(
20
);
set
@nom
=
@nom_vitrine
;
set
@collec
=
@nom_collec
;
set
@type
=
@nom_type
;
if
@nom_vitrine
<>
''
or
@nom_vitrine
<>
null
BEGIN
SELECT
nom_feve
=
@name
FROM
FEVE
,
VITRINE
WHERE
FEVE
.
num_vitrine
=
VITRINE
.
num_vitrine
AND
nom_vitrine
=
@nom
END
else
if
@nom_collec
<>
''
or
@nom_collec
<>
null
BEGIN
SELECT
nom_feve
=
@name
FROM
FEVE
,
COLLECTION
WHERE
FEVE
.
num_collec
=
COLLECTION
.
num_collec
AND
nom_collec
=
@collec
END
else
BEGIN
SELECT
nom_feve
=
@name
FROM
FEVE
,
TYPE_COLLECTION
,
COLLECTION
WHERE
COLLECTION
.
num_type
=
TYPE_COLLECTION
.
num_type
AND
COLLECTION
.
num_collec
=
FEVE
.
num_collec
AND
libelle_type
=
@type
END
return
@name
J'ai tester ce que me retourne celle ci , elle me retourne le bon nombre de ligne (apercu des données a partir du queriesdataAdapter), mais je n'ai aucune données. (Je précise que j'ai 315 fèves d'engistrer, 13 types , 109 collection et 18 vitrines). Je me demande donc d'où vient l'erreur (est ce qu'on peut retourner un ensemble de données ?).
De plus, je n'arrive pas à les faire afficher dans le datagrid.
cs_skweeky
Messages postés259Date d'inscriptionmercredi 3 mai 2006StatutMembreDernière intervention11 janvier 20108 10 août 2006 à 20:30
Est ce que tout simplement cette partie :
SELECT
nom_feve
= @name
Ne serait pas écrite à l'envers ?
Plutôt à mettre comme celà :
SELECT
@name
= nom_feve
S'il y a plusieurs valeurs à renvoyer avec cette syntaxe, il va renvoyer la dernière de la liste. Pour renvoyer une liste depuis une procédure stockée il faudrait plutôt faire celà :
SELECT
nom_feve
FROM FEVE
, TYPE_COLLECTION
,
COLLECTION
WHERE
COLLECTION.num_type
= TYPE_COLLECTION
.num_type
AND
COLLECTION.num_collec
= FEVE
.num_collec
AND libelle_type
= @type
De plus RETURN ne permet de renvoyer qu'un entier (et pas le contenu d'une variable contenant du texte comme ici) depuis une procédure stockée, il est plutôt utilisé pour renvoyer un numéro d'erreur.