Meilleur auteur de réponses
UPDATE avec clause where retournant plusieur resultat

Question
-
bonjour
j'ai un petit soucisur mon projet en ASP.NET/VB avec SQLSEVER2005
j'essaye d'exécuter un UPDATE
UPDATE ordre_de_fabrication
SET date_lancement_OF= '" & Date.Now & "'quantite_of = (SELECT DISTINCT SUM(quantiteOF) AS Expr1
FROM ligne_chargement where Numof = ( SELECT DISTINCT Numof
from lignechargement
where id_palonnier = '" & idpalonnier & "'
group by Numof) )
where id_ordre_de_fabrication = ( SELECT Numof
from lignechargement
where id_palonnier = '" & idpalonnier & "'
group by Numof)ca c'est la requete que je vouler executer grace aux objet ADO.NET
mais le probléme c'est que ma requéte retourne plusieur resultat
bien entendut vous allez me dire qu'il suffit de mettre "in" ala place du "="
mais je ne peu pas car quantite_OF doit retourner la quantité pour chaque OF et non pour toutles of selectionner
Réponses
-
Bonjour,
Essayez avec
cmd.CommandType = CommandType.StoredProcedure
au lieu de
cmd.CommandType = cmd.CommandType.StoredProcedure
Cordialement,
Alex
__________________________________________________________________________________________
Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007
Astuces pour Visual Studio 2010
Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
- Marqué comme réponse Alex Petrescu mardi 22 juin 2010 12:01
Toutes les réponses
-
-
http://www.hostingpics.net/viewer.php?id=523279galva.jpg
en faite je veut prendre les reultat d'une requéte select sequentielement (1a1) et les executer dans un UPDATE
genre un curseur
mais on ma plusieurs fois déconseiller de faire des curseur , en plus je sai pas en faire et tout ce que j'ai essayer ne fonctionne pas ...
donc il me faudrait un equivallent du curseur
avec ADO.NET je pense
cordialement
alex
-
Ah j'ai compris,
Vous avez extrait un ensemble d'enregistrement et vous voulez effectuer une mise à jour conditionnel suivant des critères spécifiques. Dans ce cas je pense que vous devez passer par les curseur vue que le traitement de mise à jour n'est pas le même pour tout les enregistrement sélectionné.
cordialement
-
oui mais ceux que j'ai essayer ne marche pas
voila le dernier que j'ai placé dans une procédure stocker :
CREATE PROCEDURE dbo.StoredProcedure1 @idpalonnier varchar(100), @datetime datetime AS /* SET NOCOUNT ON */ DECLARE @numof varchar(50) DECLARE Section_Cursor CURSOR FOR SELECT Numof from ligne_chargement where id_palonnier = @idpalonnier OPEN Section_Cursor FETCH Section_Cursor INTO @numof WHILE @@FETCH_STATUS = 0 BEGIN UPDATE ordre_de_fabrication SET date_lancement_OF = @datetime , quantite_of =( SELECT DISTINCT SUM(quantiteOF) AS Expr1 FROM ligne_chargement where Numof= @numof ) where id_ordre_de_fabrication = @numof END CLOSE Section_Cursor DEALLOCATE Section_Cursor
je ne comprend pas pourquoi ca ne fonctionne pas
tu peut m'aider stp
cordialement
alex
-
Bonjour,
Dans SQL Server l'instruction update autorise l'utilisation d'une clause FROM. Cela pourrait donc donner quelque chose comme (je ne suis pas très sûr du détail des tables notamment j'imagine que lignechargement et ligne_chargement sont une seule et même table et je ne vois pas la différence entre NumOf et id_ordre_de_fabrication :
UPDATE Ordre_de_fabrication
SET date_lancement_of=GETDATE(),
Quantite_of=SumQte
FROM Ordre_de_fabrication
JOIN (SELECT NumOf,SUM(QuantiteOf) AS SumQte FROM Ligne_chargement WHERE id_palonnier=@idpalonnier GROUP BY Num_of) Src ON Src.NumOf=Ordre_de_fabrication.NumOfToujours est-il en tout cas que l'idée est de faire simplement un JOIN avec la requête SELECT qui produit les données à utiliser pour la mise à jour...
-
Re à tous,
Dans le cas d'un code SQL il faut avoir une idée sur la conception et la structure des tables pour pouvoir contribuer et y arriver à trouver une solution pertinente.
J'aimerai bien avoir une idée sur la structure des tables et votre objectif, dans ce cas on pourra trouver une solution à votre souci.
Merci
-
-
pour faire ca je vien donc de creer ce curseur
ALTER PROCEDURE dbo.StoredProcedure1 @idpalonnier varchar(100), @datetime datetime AS /* SET NOCOUNT ON */ DECLARE @numof varchar(50) DECLARE C_ech CURSOR FOR SELECT Numof FROM ligne_chargement WHERE id_palonnier = @idpalonnier OPEN C_ech FETCH C_ech into @numof WHILE @@FETCH_STATUS = 0 BEGIN UPDATE ordre_de_fabrication SET date_lancement_OF = @datetime , quantite_of =( SELECT SUM(quantiteOF) AS Expr1 FROM ligne_chargement WHERE Numof= @numof ) WHERE id_ordre_de_fabrication = @numof FETCH C_ech into @numof END RETURN
qui devrait tré bien fonctionner
mais j'ai un probléme lors del'appel de la procédure stocké( en vb)
Private Sub MAJ_OF(ByVal idpalonnier) 'met a jour la table ordre_de_fabrication Dim storedProcedure As String = "dbo.StoredProcedure1 " & idpalonnier & "," & Date.Now Dim con As New Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\admin\Bureau\galva\App_Data\gava.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True") Dim cmd As Data.SqlClient.SqlCommand Dim pr As Data.SqlClient.SqlParameter cmd = New Data.SqlClient.SqlCommand(storedProcedure, con) cmd.CommandType = cmd.CommandType.StoredProcedure cmd.ExecuteScalar() End Sub
il me souligne en vert :cmd.CommandType = cmd.CommandType.StoredProcedure
et dit :Avertissement 3 Accès d'un membre partagé, d'un membre de constante, d'un membre enum ou d'un type imbriqué via une instance ; l'expression qualifiante ne sera pas évaluée. C:\Documents and Settings\admin\Bureau\galva\prepa\prepa.aspx 366 27 C:\...\galva\
cordialement
AP
-
Bonjour,
Essayez avec
cmd.CommandType = CommandType.StoredProcedure
au lieu de
cmd.CommandType = cmd.CommandType.StoredProcedure
Cordialement,
Alex
__________________________________________________________________________________________
Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007
Astuces pour Visual Studio 2010
Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
- Marqué comme réponse Alex Petrescu mardi 22 juin 2010 12:01