Je voulais vos conseils concernant l'utilisation de la PS ci-dessous.
Le but est de faire les mises à jour des 2 tables qui sont modifiées
sur le même formulaire. :-Z
"ComplementBoucRevi" est une table relationnelle et "Bouclement" est
une table entitée.
Est-il correcte de concevoir une PS pour les mises à jour automatique
de plusieurs tables de cette manières?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
EmanuelL
Apparement, ça ne fonctionnement pas correctement. Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à jour sans que je puisse comprendre pourquoi!>:|
Quelqu'un a-t'il une idée?
EmanuelL a émis l'idée suivante :
Bonjour à Tous,
Je voulais vos conseils concernant l'utilisation de la PS ci-dessous. Le but est de faire les mises à jour des 2 tables qui sont modifiées sur le même formulaire. :-Z
"ComplementBoucRevi" est une table relationnelle et "Bouclement" est une table entitée.
Est-il correcte de concevoir une PS pour les mises à jour automatique de plusieurs tables de cette manières?
*!* ----------------------------------- EmanuelL Membre d'AtoutFox www.atoutfox.org
Apparement, ça ne fonctionnement pas correctement.
Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas
à jour sans que je puisse comprendre pourquoi!>:|
Quelqu'un a-t'il une idée?
EmanuelL a émis l'idée suivante :
Bonjour à Tous,
Je voulais vos conseils concernant l'utilisation de la PS ci-dessous.
Le but est de faire les mises à jour des 2 tables qui sont modifiées sur le
même formulaire. :-Z
"ComplementBoucRevi" est une table relationnelle et "Bouclement" est une
table entitée.
Est-il correcte de concevoir une PS pour les mises à jour automatique de
plusieurs tables de cette manières?
Apparement, ça ne fonctionnement pas correctement. Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à jour sans que je puisse comprendre pourquoi!>:|
Quelqu'un a-t'il une idée?
EmanuelL a émis l'idée suivante :
Bonjour à Tous,
Je voulais vos conseils concernant l'utilisation de la PS ci-dessous. Le but est de faire les mises à jour des 2 tables qui sont modifiées sur le même formulaire. :-Z
"ComplementBoucRevi" est une table relationnelle et "Bouclement" est une table entitée.
Est-il correcte de concevoir une PS pour les mises à jour automatique de plusieurs tables de cette manières?
*!* ----------------------------------- EmanuelL Membre d'AtoutFox www.atoutfox.org
Patrice
Bonjour,
Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à jour sans que je puisse comprendre pourquoi!>:|
Le plus probable est que la valeur de @ComplementBoucRevi_IdLigne n'est pas bonne...
Exemple :
create table a(pk int identity not null,data varchar(10)) create table b(pk int identity not null,data varchar(10)) go insert into a values ('A') insert into b values ('B') go create procedure tmp_update(@pk1 int,@data1 varchar(10),@pk2 int,@data2 varchar(10)) as update a set data=@data1 where pk=@pk1 update b set data=@data2 where pk=@pk2 go exec tmp_update 1,'C',1,'D' select * from a select * from b
affiche bien C et D
Eventuellement moins probable, la procédure stockée est bien créée avec les deux maj ? Egalement un SET NOCOUNT ON doit pouvoir aider à générer des messages d'erreurs.
Une amélioration possible serait de mettre éventuellement les deux maj dans une transaction pour que les deux majs se fassent ou pas selon que l'on rencontre une erreur ou pas (éventuellement même en vérifiant explictement @@ROWCOUNT pour vérifier que la mise à jour a bien été effectuée)
Le RETURN @@IDENTITY ne sert à rien (on a pas d'insertion)
-- Patrice
Bonjour,
Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à
jour sans que je puisse comprendre pourquoi!>:|
Le plus probable est que la valeur de @ComplementBoucRevi_IdLigne n'est pas
bonne...
Exemple :
create table a(pk int identity not null,data varchar(10))
create table b(pk int identity not null,data varchar(10))
go
insert into a values ('A')
insert into b values ('B')
go
create procedure tmp_update(@pk1 int,@data1 varchar(10),@pk2 int,@data2
varchar(10)) as
update a set data=@data1 where pk=@pk1
update b set data=@data2 where pk=@pk2
go
exec tmp_update 1,'C',1,'D'
select * from a
select * from b
affiche bien C et D
Eventuellement moins probable, la procédure stockée est bien créée avec les
deux maj ? Egalement un SET NOCOUNT ON doit pouvoir aider à générer des
messages d'erreurs.
Une amélioration possible serait de mettre éventuellement les deux maj dans
une transaction pour que les deux majs se fassent ou pas selon que l'on
rencontre une erreur ou pas (éventuellement même en vérifiant explictement
@@ROWCOUNT pour vérifier que la mise à jour a bien été effectuée)
Le RETURN @@IDENTITY ne sert à rien (on a pas d'insertion)
Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à jour sans que je puisse comprendre pourquoi!>:|
Le plus probable est que la valeur de @ComplementBoucRevi_IdLigne n'est pas bonne...
Exemple :
create table a(pk int identity not null,data varchar(10)) create table b(pk int identity not null,data varchar(10)) go insert into a values ('A') insert into b values ('B') go create procedure tmp_update(@pk1 int,@data1 varchar(10),@pk2 int,@data2 varchar(10)) as update a set data=@data1 where pk=@pk1 update b set data=@data2 where pk=@pk2 go exec tmp_update 1,'C',1,'D' select * from a select * from b
affiche bien C et D
Eventuellement moins probable, la procédure stockée est bien créée avec les deux maj ? Egalement un SET NOCOUNT ON doit pouvoir aider à générer des messages d'erreurs.
Une amélioration possible serait de mettre éventuellement les deux maj dans une transaction pour que les deux majs se fassent ou pas selon que l'on rencontre une erreur ou pas (éventuellement même en vérifiant explictement @@ROWCOUNT pour vérifier que la mise à jour a bien été effectuée)
Le RETURN @@IDENTITY ne sert à rien (on a pas d'insertion)
-- Patrice
EmanuelL
Merci beaucoup Patrice,
Ton aide était précieuse, en adaptant ma PS comme ci-dessous, ça conctionne. ;-)/ :D
CREATE PROCEDURE [dbo].[usp_BoucUpdate]( @Bouclement_IdLigne int, @Date_RecepDoc datetime, @Date_BoucProv datetime, @Date_BoucDefi datetime, @Commentaire nvarchar(max), @PvAgRecu bit, @F103_Envoye bit, @R25_Envoye bit, @DeclIntegrite_Recu bit, @ComplementBoucRevi_IdLigne int ) AS --SET NOCOUNT ON
BEGIN TRANSACTION T1 UPDATE [Bouclement] SET [Date_RecepDoc] = @Date_RecepDoc, [Date_BoucProv] = @Date_BoucProv, [Date_BoucDefi] = @Date_BoucDefi, [Commentaire] = @Commentaire WHERE [Bouclement_IdLigne] = @Bouclement_IdLigne;
--PRINT @@ROWCOUNT;
UPDATE [ComplementBoucRevi] SET [PvAgRecu] = @PvAgRecu, [F103_Envoye] = @F103_Envoye, [R25_Envoye] = @R25_Envoye, [DeclIntegrite_Recu] = @DeclIntegrite_Recu WHERE [ComplementBoucRevi_IdLigne] = @ComplementBoucRevi_IdLigne;
--PRINT @@ROWCOUNT; COMMIT TRANSACTION T1; GO
Le 17.11.2009, Patrice a supposé :
Bonjour,
Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à jour sans que je puisse comprendre pourquoi!>:|
Le plus probable est que la valeur de @ComplementBoucRevi_IdLigne n'est pas bonne...
Exemple :
create table a(pk int identity not null,data varchar(10)) create table b(pk int identity not null,data varchar(10)) go insert into a values ('A') insert into b values ('B') go create procedure tmp_update(@pk1 int,@data1 varchar(10),@pk2 int,@data2 varchar(10)) as update a set data=@data1 where pk=@pk1 update b set data=@data2 where pk=@pk2 go exec tmp_update 1,'C',1,'D' select * from a select * from b
affiche bien C et D
Eventuellement moins probable, la procédure stockée est bien créée avec les deux maj ? Egalement un SET NOCOUNT ON doit pouvoir aider à générer des messages d'erreurs.
Une amélioration possible serait de mettre éventuellement les deux maj dans une transaction pour que les deux majs se fassent ou pas selon que l'on rencontre une erreur ou pas (éventuellement même en vérifiant explictement @@ROWCOUNT pour vérifier que la mise à jour a bien été effectuée)
Le RETURN @@IDENTITY ne sert à rien (on a pas d'insertion)
--
*!* ----------------------------------- EmanuelL Membre d'AtoutFox www.atoutfox.org
Merci beaucoup Patrice,
Ton aide était précieuse, en adaptant ma PS comme ci-dessous, ça
conctionne. ;-)/ :D
CREATE PROCEDURE [dbo].[usp_BoucUpdate](
@Bouclement_IdLigne int,
@Date_RecepDoc datetime,
@Date_BoucProv datetime,
@Date_BoucDefi datetime,
@Commentaire nvarchar(max),
@PvAgRecu bit,
@F103_Envoye bit,
@R25_Envoye bit,
@DeclIntegrite_Recu bit,
@ComplementBoucRevi_IdLigne int
)
AS
--SET NOCOUNT ON
BEGIN TRANSACTION T1
UPDATE [Bouclement]
SET [Date_RecepDoc] = @Date_RecepDoc,
[Date_BoucProv] = @Date_BoucProv,
[Date_BoucDefi] = @Date_BoucDefi,
[Commentaire] = @Commentaire
WHERE [Bouclement_IdLigne] = @Bouclement_IdLigne;
--PRINT @@ROWCOUNT;
UPDATE [ComplementBoucRevi]
SET [PvAgRecu] = @PvAgRecu,
[F103_Envoye] = @F103_Envoye,
[R25_Envoye] = @R25_Envoye,
[DeclIntegrite_Recu] = @DeclIntegrite_Recu
WHERE [ComplementBoucRevi_IdLigne] = @ComplementBoucRevi_IdLigne;
--PRINT @@ROWCOUNT;
COMMIT TRANSACTION T1;
GO
Le 17.11.2009, Patrice a supposé :
Bonjour,
Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à
jour sans que je puisse comprendre pourquoi!>:|
Le plus probable est que la valeur de @ComplementBoucRevi_IdLigne n'est pas
bonne...
Exemple :
create table a(pk int identity not null,data varchar(10))
create table b(pk int identity not null,data varchar(10))
go
insert into a values ('A')
insert into b values ('B')
go
create procedure tmp_update(@pk1 int,@data1 varchar(10),@pk2 int,@data2
varchar(10)) as
update a set data=@data1 where pk=@pk1
update b set data=@data2 where pk=@pk2
go
exec tmp_update 1,'C',1,'D'
select * from a
select * from b
affiche bien C et D
Eventuellement moins probable, la procédure stockée est bien créée avec les
deux maj ? Egalement un SET NOCOUNT ON doit pouvoir aider à générer des
messages d'erreurs.
Une amélioration possible serait de mettre éventuellement les deux maj dans
une transaction pour que les deux majs se fassent ou pas selon que l'on
rencontre une erreur ou pas (éventuellement même en vérifiant explictement
@@ROWCOUNT pour vérifier que la mise à jour a bien été effectuée)
Le RETURN @@IDENTITY ne sert à rien (on a pas d'insertion)
--
*!* -----------------------------------
EmanuelL
Membre d'AtoutFox
www.atoutfox.org
Ton aide était précieuse, en adaptant ma PS comme ci-dessous, ça conctionne. ;-)/ :D
CREATE PROCEDURE [dbo].[usp_BoucUpdate]( @Bouclement_IdLigne int, @Date_RecepDoc datetime, @Date_BoucProv datetime, @Date_BoucDefi datetime, @Commentaire nvarchar(max), @PvAgRecu bit, @F103_Envoye bit, @R25_Envoye bit, @DeclIntegrite_Recu bit, @ComplementBoucRevi_IdLigne int ) AS --SET NOCOUNT ON
BEGIN TRANSACTION T1 UPDATE [Bouclement] SET [Date_RecepDoc] = @Date_RecepDoc, [Date_BoucProv] = @Date_BoucProv, [Date_BoucDefi] = @Date_BoucDefi, [Commentaire] = @Commentaire WHERE [Bouclement_IdLigne] = @Bouclement_IdLigne;
--PRINT @@ROWCOUNT;
UPDATE [ComplementBoucRevi] SET [PvAgRecu] = @PvAgRecu, [F103_Envoye] = @F103_Envoye, [R25_Envoye] = @R25_Envoye, [DeclIntegrite_Recu] = @DeclIntegrite_Recu WHERE [ComplementBoucRevi_IdLigne] = @ComplementBoucRevi_IdLigne;
--PRINT @@ROWCOUNT; COMMIT TRANSACTION T1; GO
Le 17.11.2009, Patrice a supposé :
Bonjour,
Car d'après quelques tests, la table "ComplementBoucRevi" ne s'est pas à jour sans que je puisse comprendre pourquoi!>:|
Le plus probable est que la valeur de @ComplementBoucRevi_IdLigne n'est pas bonne...
Exemple :
create table a(pk int identity not null,data varchar(10)) create table b(pk int identity not null,data varchar(10)) go insert into a values ('A') insert into b values ('B') go create procedure tmp_update(@pk1 int,@data1 varchar(10),@pk2 int,@data2 varchar(10)) as update a set data=@data1 where pk=@pk1 update b set data=@data2 where pk=@pk2 go exec tmp_update 1,'C',1,'D' select * from a select * from b
affiche bien C et D
Eventuellement moins probable, la procédure stockée est bien créée avec les deux maj ? Egalement un SET NOCOUNT ON doit pouvoir aider à générer des messages d'erreurs.
Une amélioration possible serait de mettre éventuellement les deux maj dans une transaction pour que les deux majs se fassent ou pas selon que l'on rencontre une erreur ou pas (éventuellement même en vérifiant explictement @@ROWCOUNT pour vérifier que la mise à jour a bien été effectuée)
Le RETURN @@IDENTITY ne sert à rien (on a pas d'insertion)
--
*!* ----------------------------------- EmanuelL Membre d'AtoutFox www.atoutfox.org