Requete avec parametre output

cs_tintin972 Messages postés 36 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 16 mai 2008 - 12 mai 2008 à 00:53
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 - 15 mai 2008 à 12:09
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

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
13 mai 2008 à 18:07
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..."
0
cs_tintin972 Messages postés 36 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 13:58
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"? )
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
14 mai 2008 à 14:18
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..."
0
cs_tintin972 Messages postés 36 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 14:54
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_tintin972 Messages postés 36 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 17:23
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...
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
14 mai 2008 à 17:40
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..."
0
cs_tintin972 Messages postés 36 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 16 mai 2008
14 mai 2008 à 18:03
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 !!!
 
0
cs_tintin972 Messages postés 36 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 16 mai 2008
15 mai 2008 à 09:59
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...
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
15 mai 2008 à 10:04
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..."
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
15 mai 2008 à 12:09
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..."
0