Bonjour,
J'ai une procédure stockée qui retourne plusieurs résultats grâce à un curseur.
Comment afficher les résultats dans un grid?
Merci
Bonjour,
J'ai une procédure stockée qui retourne plusieurs résultats grâce à un curseur.
Comment afficher les résultats dans un grid?
Merci
tu peut exécuter ton commande dans un sqldatareader dont tu peut parcourir pour extraire les résultats
j’espère être claire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SqlDataReader _SqlDataReader = _SqlCommand.ExecuteReader(); //read SqlDataReader while (_SqlDataReader .Read()) { string field= Convert.ToString(dr["field"]);//field un champ resultat de command } _SqlDataReader .CloseDataReader();
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Je te remercie pour la réponse.
J'ai fais comme tu dis mais j'ai cette erreur :
Sais tu d'où cela vient?Invalid attempt to call Read when reader is closed.
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 SqlConnection conn = new SqlConnection(); SqlCommand command = new SqlCommand("storeProc1", conn); command.Parameters.Add(new SqlParameter("@id", SqlDbType.Int)); command.Parameters["@id"].Value = user.id; command.CommandType = CommandType.StoredProcedure; DataTable dt = new DataTable(); try { conn.Open(); SqlDataReader r = command.ExecuteReader(); while (r.Read()) { dt.Load(r); } grid1.DataSource = dt; grid1.DataBind(); grid1.Visible = true; } catch (SqlException e) { //... }
Bonjour;
pour ton cas c'est suffisant de faire un seul read() mais il va te retoutne ligne
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 SqlConnection conn = new SqlConnection(); SqlCommand command = new SqlCommand("storeProc1", conn); command.Parameters.Add(new SqlParameter("@id", SqlDbType.Int)); command.Parameters["@id"].Value = user.id; command.CommandType = CommandType.StoredProcedure; DataTable dt = new DataTable(); try { conn.Open(); SqlDataReader r = command.ExecuteReader(); r.Read(); dt.Load(r); grid1.DataSource = dt; grid1.DataBind(); grid1.Visible = true; } catch (SqlException e) { //... }
je préfère si tu connait les retournes de ta requête de lire ligne par ligne
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Je viens de changer mon code.
Je n'ai plus d'erreur mais ça ne me renvoie aucun résultat, alors que quand j'exécute ma procédure stockée dans SQL server, ça me renvoie bien les résultats escomptés![]()
ok;
il te renvoie quoi ton storeProc1les users ??
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Il me renvoie les résultats d'une recherche.
C'est une procédure stockée qui prend en id un id de recherche et qui va chercher dans ma table recherche, les id correspondant, et qui lance une recherche grâce à ç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
19
20
21
22
23
24
25
26
27
28 CREATE PROCEDURE [dbo].[proc1] -- Add the parameters for the stored procedure here @id int AS BEGIN declare @result nvarchar(50) DECLARE @request nvarchar(MAX) = 'SELECT DISTINCT AC.name, AC.firstname FROM ACT AS AC, USER AS US, USER_L AS USL WHERE AC.id = US.id' DECLARE c1 CURSOR FOR SELECT name FROM RESEARCH WHERE id = @id OPEN c1 FETCH c1 INTO @result WHILE @@FETCH_STATUS = 0 BEGIN IF (@result = 'exp') SET @request = @request + ' AND USL.id IN(SELECT id FROM L WHERE name LIKE ( ''%'+@p1+'%'' ) ) OR AC.name LIKE (''%'+@p1+'%'')' IF (@result = 'lan') SET @request = @request + ' AND AC.name LIKE ''%'+@p2+'%''' FETCH NEXT FROM c1 INTO @result END CLOSE c1 DEALLOCATE c1 EXECUTE (@request); END
j'ai rien compris de ton procédure!!?
tu me dire a quoi sert exactement le procédure ?!
On va voir comment extraire les données après !!
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
^^
J'ai une table RESEARCH dans ma base, qui contient pour un chaque id, les différents mots tapés par l'utilisateur dans une textbox.
Donc ma clé primaire est id+nom paramètre.
Dans ma procédure stockée, je récupère l'id de la recherche, et pour chaque paramètre associé a cette recherche, je regarde dans les tables de ma base de données, si il existe.
En gros donc, ma procédure stockée prend l'id d'une recherche, effectue la recherche dans mes tables et renvoie les résultats (c'est une procédure pour un moteur de recherche).
si j'ai bien compris
le résultat dépend de la recherche ;alors les retournes ne sont pas spécifiées à chaque fois ???
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
bonjour;
tu peut recuperer les champs et les valeurs des champs par
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 conn.Open(); SqlDataReader r = command.ExecuteReader(); DataTable schemaTable = r.GetSchemaTable(); List<string> leschampsresultat = new List<string>(); foreach (DataRow row in schemaTable.Rows) leschampsresultat.Add(row.ItemArray[0].ToString()); while (r.Read()) { for (int i = 0; i < leschampsresultat.Count - 1; i++) { string champName = leschampsresultat[i]; string ChampValue = r[i].ToString(); //ici tu peut faire tous ce que tu veux avec } }
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Bonjour,
Je n'ai rien compris à ce que tu as fais ... tu peux m'expliquer?
Les champs et valeurs de mes champs sont dans ma table non?
Lorsque je fais, cela me renvoie "null".
Code : Sélectionner tout - Visualiser dans une fenêtre à part r.GetSchemaTable();
C'est quels champs et quelles valeurs que tu récupères? Si ce sont les valeurs saisies par l'utilisateur, je les enregistre dans une table une fois le bouton cliqué, donc je les ai.
En fait, ce que je veux c'est :
J'ai une procédure stockée qui me renvoie x lignes de résultats en utilisant un curseur.
Je veux juste récupérer toutes ces lignes et les mettre dans ma datagrid.
J'ai peut être oublié quelque chose dans ma procédure stockée?
J'utilise le curseur, mais je ne renvoie rien, c'est peut être là que ça cloche?
A la fin de ma procédure stockée je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part EXECUTE @request;
te renvoie la structure des résultats ( les nom des champs)
Code : Sélectionner tout - Visualiser dans une fenêtre à part r.GetSchemaTable();
mais vraiment essayer de suivre ce que tu veux faire avec mais j'ai rien compris
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Ça marche, désolé du dérangement, ça fonctionne bien avec la première solution.
J'avais un problème dans mon code, j'incrémentais une variable à un endroit où je n'aurais pas du, donc je renvoyais un id non existant à ma procédure, voilà pourquoi je n'avais aucun résultats.
Merci.
avec plaisir !!!!
Si tu aimes ma Réponse pense à cliquer sur
Visiter mon blogEt mes codes sources
- La simulation de navigation dans internet explorer avec Interop.SHDocVw
- Protéger mes données de configuration dans une dll compilée
Partager