Requete avec parametre output

Signaler
Messages postés
36
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
16 mai 2008
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
Salut à tous,
Je cherche à lier 3 tables voir ce post
L'une des manière de lier les 2 dernieres tables serait que la requete qui rempli ma deuxiéme table me renvoi (output) un id...Mais je n'arrive pas à récupérer une valeur en sortie de ma requete..

Comment faire pour qu'une requete renvoi une valeur?? Est-ce possible?
 
Ma maniere de faire est la suivante...

Dans mon dataset je définis la requete et dans les propriétés je
définis un paramètre avec en direction output. Je le fais donc avec
l'assistant mais bon....

Pour affecter la valeur retour je définis une variable para (j'ai mi le
? par rapport aux erreur qui m'étaient retournés mais je sais pas a quoi ca correspond)...et je la place en
utilisant out dans mon appel...


decimal? para;

this.TableAdapter.Fill(this.mBSDBDataSet.PR_CP_DETAIL, out para);


Mais para semble être toujours null...

Merci d'avance pour votre aide...
Pierre qui roule n'amasse pas mousse...

10 réponses

Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
peut tu faire une procedure stockee ??

si oui sous sql 2000 ou 2005 tu peux avoir un parametre output recuperable en C#

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
36
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
16 mai 2008

Salut  et merci Arthenius,

A priori oui je peu faire une procédure stockée (je suis pas sur de ce que ca implique)

je suis sur sql 2005
J'ai trouvé ce topic la :
http://www.csharpfr.com/infomsg_EXECUTION-PROCEDURE-STOCKE_819191.aspx

ca m'a l'air d'être a peu près ce que je veux faire...A tu une recommandation à faire?

Je test dès que possible la procédure stocké (j'ai un gros problème avec ma connection à la base de donné...comment faire pour sauvegarder la nouvelle version de la bdd (celle qui est dans bin\debug) à la place de la bdd "source"? )
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
si tu est sous sql 2005 pas de souci
tu pourra faire une procedure stockee avec un parametre OUTPUT
et depuis c# bien mettre le param en direction.output et ca va rouler :)

heu je nais pas compris ton pb de sauvegarde...

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
36
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
16 mai 2008

Je me lance a l'attaque de la procédure stocké!
Pour le pb de connection j'ai fait un autre post je pense que c'est mieux...

http://www.csharpfr.com/infomsg_PROPRIETE-CONNECTION_1132534.aspx
Messages postés
36
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
16 mai 2008

Bon ...et la le mur....qui sépare le débutant du reste...

Premièrement quelle procédure faire?

ALTER PROCEDURE dbo.StoredProcedure1
 @paramprod_id numeric OUTPUT
AS
SELECT *
FROM dbo.PRODUCT

    SET
    @paramprod_id =  SCOPE_IDENTITY()
    RETURN
Je doute que cette requete me retourne un product_id en fonction de la ligne sélectionné dans PRODUCT.
 Comment faire ca?

Ensuite comment faire pour déclarer un paramètre?

SqlParameter param = new SqlParameter("@paramprod_id", SqlDbType.Decimal);
 param.Direction = ParameterDirection.Output;
 

Comment faire appel a la procédureStoredProcedure1 ?

- StoredProcedure1 .Excutenonquery()
- ProductTableAdapter.FillbyProc(this.mBSDBDataSet1.ProductTable, ref param)
- autre

I send an SOS...
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
en fait tu m'avais deja questionner la dessus, il me semble..
je crois que je vois ce que tu veux faire et la solution doit passer par un currencymanager a mon avis

en gros dis moi si je me trompe : tu a 3 table A, B et C

A l'entete, B qui pointe vers A et C qui pointe vers B ??

donc tu veux que lorsuqe tu cliques sur une ligne de B un datagrid ce charge avec les donnees de C Correspondant a ta ligne B ??

that's IT ??

si c'est ca il faudriat que je prenne un peu de temps pour te faire un exmple de source concret pour ca...mais pas avant demain entre midi et 2 ^^

essaie de me detailler exactement ce que tu veux faire si je n'ai pas compris et je tacherais de te faire un source exemple

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
36
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
16 mai 2008

En effet je t'ai questionné et tu m'avais suggérer l'utilisation du currency manager...Outil que je n'ai pas réussi à utiliser.

Non en fait c'est pas vraiment ca... J'explique avec des détails mon problème ici : Lier 3 tables

En version courte :
Mon Objectif : afficher une liste de composant pour un produit
j'ai une table PRODUIT(A) qui pointe sur une table TRANSITION(B) et une table COMPOSANT(C) qui elle aussi pointe sur (B).
Et je veux que quand je sélectionne un produit dans A...La liste correspond d'éléments B s'affiche et que celle des éléments C aussi s'affiche.... Le must serait qu'au finale j'arrive a mettre liste B+ liste C dans un même dgv...

Je suis sur que c super simple...mais ca me fait super ch....

En tous cas si tu peux me faire un exemple ca serait génial !!!
 
Messages postés
36
Date d'inscription
lundi 17 mars 2008
Statut
Membre
Dernière intervention
16 mai 2008

En fait j'ai un doute sur la définition de " A pointe vers B" ... pour moi ca veut dire A contient la PK et B la FK...
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
oui t'inquiete je me baserais sur ce que tu a mis dans ton autre post ou tu detail un peu les champs cza ma permis de comprendre la structure de tes tables :)

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
http://www.csharpfr.com/codes/LIAISON-TABLE-GRACES-CURRENCYMANAGER_46670.aspx

voila jespere que tu trouvra ton bonheur avec ca

c'est coder vite fait et pas tester (pas de bdd)

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."