Mes connaissance sont assez basiques en Transac-SQL. J'ai fait un trigger
dont le but est le suivant :
Lors de certains INSERT ou UPDATE d'une table (LIGORSR), je voudrais
alimenter une table (DISPON) avec 2 enregistrements. Cela a l'air de
fontionner mais j'ai oublié une notion TRES importante... Elle ne fonctionne
que si la table Inserted ne contient qu'UN seul enregistrement. Je ne
comprends pas comment la transformer pour qu'elle fonctionne pour CHACUNE
des lignes de mon Update comme par exemple avec un UPDATE du type :
UPDATE LIGORSR SET DATE1='20030402'
Merci d'avance de vos lumières.
B. Neve
Un programmeur en détresse
CREATE TRIGGER UPDLIGORSR ON [dbo].[LIGORSR]
FOR INSERT,UPDATE
AS
DECLARE @newLOCLEUNIK bigint
DECLARE @DAYTOADD int
DECLARE @DAYTOREM int
DECLARE @newDATE1 CHAR(8)
DECLARE @newDATE2 CHAR(8)
DECLARE @newCODEARTICL VARCHAR(20)
DECLARE @newQUANTITE REAL
DECLARE @newQUANTOPT REAL
DECLARE @newCODESTATUS TINYINT
DECLARE @newWACLEUNIK bigint
DECLARE @newSTOREID bigint
DECLARE @newARTLOTID bigint
SELECT @newLOCLEUNIK =(SELECT LOCLEUNIK FROM Inserted)
SELECT @newCODEARTICL =(SELECT CODEARTICL FROM Inserted)
SELECT @DAYTOADD=(SELECT NAAFTER FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
SELECT @DAYTOREM=(SELECT NABEFORE FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
SELECT @newDATE1 =(SELECT DATE1 FROM Inserted)
SELECT @newDATE1=dbo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE1))
SELECT @newDATE2 =(SELECT DATE2 FROM Inserted)
SELECT @newDATE2 =dbo.Get_Right_Date(DATEADD(day,@DAYTOREM,@newDATE2))
SELECT @newQUANTITE =(SELECT QUANTITE FROM Inserted)
SELECT @newCODESTATUS =(SELECT CODESTATUS FROM Inserted)
SELECT @newWACLEUNIK =(SELECT WACLEUNIKD FROM Inserted)
SELECT @newSTOREID =(SELECT STOREID FROM Inserted)
SELECT @newARTLOTID =(SELECT ARTLOTID FROM Inserted)
DELETE FROM DISPON WHERE LOCLEUNIK=@newLOCLEUNIK
AGAIN:
IF (SELECT GESTIONEP FROM Inserted)=1 AND (SELECT CODESTATUS FROM
Inserted)>1
BEGIN
IF (SELECT ARTICLE.WHUSED FROM ARTICLE WHERE
ARTICLE.CODEARTICL=@newCODEARTICL)=2 AND @newCODESTATUS=5
BEGIN
UPDATE ARTICLE
SET WHUSED=0 WHERE ARTICLE.CODEARTICL=@newCODEARTICL
END
IF @newCODESTATUS>2 AND @newCODESTATUS<5
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',-@newQUANTITE,0,@newCODESTATUS,@
newWACLEUNIK,@newSTOREID,@newARTLOTID)
END
IF @newCODESTATUS=2
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',0,-@newQUANTITE,@newCODESTATUS,@
newWACLEUNIK,@newSTOREID,@newARTLOTID)
END
IF (SELECT TYPELIGNE FROM Inserted)<>3 AND @newCODESTATUS<7
BEGIN
IF @newCODESTATUS>2
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,@newCODESTATUS,@n
ewWACLEUNIK,@newSTOREID,@newARTLOTID)
END
IF @newCODESTATUS=2
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',0,@newQUANTITE,@newCODESTATUS,@n
ewWACLEUNIK,@newSTOREID,@newARTLOTID)
END
END
IF @DAYTOADD>0 AND @newCODESTATUS=7
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'Z',-@newQUANTITE,0,10,@newWACLEUNIK
,@newSTOREID,@newARTLOTID)
SELECT @newDATE2 =dbo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE2))
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,10,@newWACLEUNIK,
@newSTOREID,@newARTLOTID)
END
END
SELECT @newCODEARTICL=(SELECT FIELD6 FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
PRINT @newCODEARTICL
IF @newCODEARTICL<>"" GOTO AGAIN
Mais sans documenter ton truc, c'est très difficile
A +
B. Neve a écrit:
Bonjour,
Mes connaissance sont assez basiques en Transac-SQL. J'ai fait un trigger dont le but est le suivant : Lors de certains INSERT ou UPDATE d'une table (LIGORSR), je voudrais alimenter une table (DISPON) avec 2 enregistrements. Cela a l'air de fontionner mais j'ai oublié une notion TRES importante... Elle ne fonctionne que si la table Inserted ne contient qu'UN seul enregistrement. Je ne comprends pas comment la transformer pour qu'elle fonctionne pour CHACUNE des lignes de mon Update comme par exemple avec un UPDATE du type : UPDATE LIGORSR SET DATE1='20030402'
Merci d'avance de vos lumières.
B. Neve Un programmeur en détresse
CREATE TRIGGER UPDLIGORSR ON [dbo].[LIGORSR] FOR INSERT,UPDATE AS DECLARE @newLOCLEUNIK bigint DECLARE @DAYTOADD int DECLARE @DAYTOREM int DECLARE @newDATE1 CHAR(8) DECLARE @newDATE2 CHAR(8) DECLARE @newCODEARTICL VARCHAR(20) DECLARE @newQUANTITE REAL DECLARE @newQUANTOPT REAL DECLARE @newCODESTATUS TINYINT DECLARE @newWACLEUNIK bigint DECLARE @newSTOREID bigint DECLARE @newARTLOTID bigint SELECT @newLOCLEUNIK =(SELECT LOCLEUNIK FROM Inserted) SELECT @newCODEARTICL =(SELECT CODEARTICL FROM Inserted) SELECT @DAYTOADD=(SELECT NAAFTER FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) SELECT @DAYTOREM=(SELECT NABEFORE FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) SELECT @newDATE1 =(SELECT DATE1 FROM Inserted) SELECT @newDATE1Ûo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE1)) SELECT @newDATE2 =(SELECT DATE2 FROM Inserted) SELECT @newDATE2 Ûo.Get_Right_Date(DATEADD(day,@DAYTOREM,@newDATE2)) SELECT @newQUANTITE =(SELECT QUANTITE FROM Inserted) SELECT @newCODESTATUS =(SELECT CODESTATUS FROM Inserted) SELECT @newWACLEUNIK =(SELECT WACLEUNIKD FROM Inserted) SELECT @newSTOREID =(SELECT STOREID FROM Inserted) SELECT @newARTLOTID =(SELECT ARTLOTID FROM Inserted) DELETE FROM DISPON WHERE LOCLEUNIK=@newLOCLEUNIK AGAIN: IF (SELECT GESTIONEP FROM Inserted)=1 AND (SELECT CODESTATUS FROM Inserted)>1 BEGIN IF (SELECT ARTICLE.WHUSED FROM ARTICLE WHERE ARTICLE.CODEARTICL=@newCODEARTICL)=2 AND @newCODESTATUS=5 BEGIN UPDATE ARTICLE SET WHUSED=0 WHERE ARTICLE.CODEARTICL=@newCODEARTICL END IF @newCODESTATUS>2 AND @newCODESTATUS<5 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',,0,@newCODESTATUS,@ newWACLEUNIK,@newSTOREID,@newARTLOTID) END IF @newCODESTATUS=2 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',0,,@newCODESTATUS,@ newWACLEUNIK,@newSTOREID,@newARTLOTID) END IF (SELECT TYPELIGNE FROM Inserted)<>3 AND @newCODESTATUS<7 BEGIN IF @newCODESTATUS>2 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,@newCODESTATUS,@n ewWACLEUNIK,@newSTOREID,@newARTLOTID) END IF @newCODESTATUS=2 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',0,@newQUANTITE,@newCODESTATUS,@n ewWACLEUNIK,@newSTOREID,@newARTLOTID) END END IF @DAYTOADD>0 AND @newCODESTATUS=7 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'Z',,0,10,@newWACLEUNIK ,@newSTOREID,@newARTLOTID) SELECT @newDATE2 Ûo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE2)) INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,10,@newWACLEUNIK, @newSTOREID,@newARTLOTID) END END SELECT @newCODEARTICL=(SELECT FIELD6 FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) PRINT @newCODEARTICL IF @newCODEARTICL<>"" GOTO AGAIN
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Mais sans documenter ton truc, c'est très difficile
A +
B. Neve a écrit:
Bonjour,
Mes connaissance sont assez basiques en Transac-SQL. J'ai fait un trigger
dont le but est le suivant :
Lors de certains INSERT ou UPDATE d'une table (LIGORSR), je voudrais
alimenter une table (DISPON) avec 2 enregistrements. Cela a l'air de
fontionner mais j'ai oublié une notion TRES importante... Elle ne fonctionne
que si la table Inserted ne contient qu'UN seul enregistrement. Je ne
comprends pas comment la transformer pour qu'elle fonctionne pour CHACUNE
des lignes de mon Update comme par exemple avec un UPDATE du type :
UPDATE LIGORSR SET DATE1='20030402'
Merci d'avance de vos lumières.
B. Neve
Un programmeur en détresse
CREATE TRIGGER UPDLIGORSR ON [dbo].[LIGORSR]
FOR INSERT,UPDATE
AS
DECLARE @newLOCLEUNIK bigint
DECLARE @DAYTOADD int
DECLARE @DAYTOREM int
DECLARE @newDATE1 CHAR(8)
DECLARE @newDATE2 CHAR(8)
DECLARE @newCODEARTICL VARCHAR(20)
DECLARE @newQUANTITE REAL
DECLARE @newQUANTOPT REAL
DECLARE @newCODESTATUS TINYINT
DECLARE @newWACLEUNIK bigint
DECLARE @newSTOREID bigint
DECLARE @newARTLOTID bigint
SELECT @newLOCLEUNIK =(SELECT LOCLEUNIK FROM Inserted)
SELECT @newCODEARTICL =(SELECT CODEARTICL FROM Inserted)
SELECT @DAYTOADD=(SELECT NAAFTER FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
SELECT @DAYTOREM=(SELECT NABEFORE FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
SELECT @newDATE1 =(SELECT DATE1 FROM Inserted)
SELECT @newDATE1Ûo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE1))
SELECT @newDATE2 =(SELECT DATE2 FROM Inserted)
SELECT @newDATE2 Ûo.Get_Right_Date(DATEADD(day,@DAYTOREM,@newDATE2))
SELECT @newQUANTITE =(SELECT QUANTITE FROM Inserted)
SELECT @newCODESTATUS =(SELECT CODESTATUS FROM Inserted)
SELECT @newWACLEUNIK =(SELECT WACLEUNIKD FROM Inserted)
SELECT @newSTOREID =(SELECT STOREID FROM Inserted)
SELECT @newARTLOTID =(SELECT ARTLOTID FROM Inserted)
DELETE FROM DISPON WHERE LOCLEUNIK=@newLOCLEUNIK
AGAIN:
IF (SELECT GESTIONEP FROM Inserted)=1 AND (SELECT CODESTATUS FROM
Inserted)>1
BEGIN
IF (SELECT ARTICLE.WHUSED FROM ARTICLE WHERE
ARTICLE.CODEARTICL=@newCODEARTICL)=2 AND @newCODESTATUS=5
BEGIN
UPDATE ARTICLE
SET WHUSED=0 WHERE ARTICLE.CODEARTICL=@newCODEARTICL
END
IF @newCODESTATUS>2 AND @newCODESTATUS<5
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',-@newQUANTITE,0,@newCODESTATUS,@
newWACLEUNIK,@newSTOREID,@newARTLOTID)
END
IF @newCODESTATUS=2
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',0,-@newQUANTITE,@newCODESTATUS,@
newWACLEUNIK,@newSTOREID,@newARTLOTID)
END
IF (SELECT TYPELIGNE FROM Inserted)<>3 AND @newCODESTATUS<7
BEGIN
IF @newCODESTATUS>2
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,@newCODESTATUS,@n
ewWACLEUNIK,@newSTOREID,@newARTLOTID)
END
IF @newCODESTATUS=2
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',0,@newQUANTITE,@newCODESTATUS,@n
ewWACLEUNIK,@newSTOREID,@newARTLOTID)
END
END
IF @DAYTOADD>0 AND @newCODESTATUS=7
BEGIN
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'Z',-@newQUANTITE,0,10,@newWACLEUNIK
,@newSTOREID,@newARTLOTID)
SELECT @newDATE2 Ûo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE2))
INSERT INTO DISPON (LOCLEUNIK,
DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT
ID)
VALUES
(@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,10,@newWACLEUNIK,
@newSTOREID,@newARTLOTID)
END
END
SELECT @newCODEARTICL=(SELECT FIELD6 FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
PRINT @newCODEARTICL
IF @newCODEARTICL<>"" GOTO AGAIN
--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
Mais sans documenter ton truc, c'est très difficile
A +
B. Neve a écrit:
Bonjour,
Mes connaissance sont assez basiques en Transac-SQL. J'ai fait un trigger dont le but est le suivant : Lors de certains INSERT ou UPDATE d'une table (LIGORSR), je voudrais alimenter une table (DISPON) avec 2 enregistrements. Cela a l'air de fontionner mais j'ai oublié une notion TRES importante... Elle ne fonctionne que si la table Inserted ne contient qu'UN seul enregistrement. Je ne comprends pas comment la transformer pour qu'elle fonctionne pour CHACUNE des lignes de mon Update comme par exemple avec un UPDATE du type : UPDATE LIGORSR SET DATE1='20030402'
Merci d'avance de vos lumières.
B. Neve Un programmeur en détresse
CREATE TRIGGER UPDLIGORSR ON [dbo].[LIGORSR] FOR INSERT,UPDATE AS DECLARE @newLOCLEUNIK bigint DECLARE @DAYTOADD int DECLARE @DAYTOREM int DECLARE @newDATE1 CHAR(8) DECLARE @newDATE2 CHAR(8) DECLARE @newCODEARTICL VARCHAR(20) DECLARE @newQUANTITE REAL DECLARE @newQUANTOPT REAL DECLARE @newCODESTATUS TINYINT DECLARE @newWACLEUNIK bigint DECLARE @newSTOREID bigint DECLARE @newARTLOTID bigint SELECT @newLOCLEUNIK =(SELECT LOCLEUNIK FROM Inserted) SELECT @newCODEARTICL =(SELECT CODEARTICL FROM Inserted) SELECT @DAYTOADD=(SELECT NAAFTER FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) SELECT @DAYTOREM=(SELECT NABEFORE FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) SELECT @newDATE1 =(SELECT DATE1 FROM Inserted) SELECT @newDATE1Ûo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE1)) SELECT @newDATE2 =(SELECT DATE2 FROM Inserted) SELECT @newDATE2 Ûo.Get_Right_Date(DATEADD(day,@DAYTOREM,@newDATE2)) SELECT @newQUANTITE =(SELECT QUANTITE FROM Inserted) SELECT @newCODESTATUS =(SELECT CODESTATUS FROM Inserted) SELECT @newWACLEUNIK =(SELECT WACLEUNIKD FROM Inserted) SELECT @newSTOREID =(SELECT STOREID FROM Inserted) SELECT @newARTLOTID =(SELECT ARTLOTID FROM Inserted) DELETE FROM DISPON WHERE LOCLEUNIK=@newLOCLEUNIK AGAIN: IF (SELECT GESTIONEP FROM Inserted)=1 AND (SELECT CODESTATUS FROM Inserted)>1 BEGIN IF (SELECT ARTICLE.WHUSED FROM ARTICLE WHERE ARTICLE.CODEARTICL=@newCODEARTICL)=2 AND @newCODESTATUS=5 BEGIN UPDATE ARTICLE SET WHUSED=0 WHERE ARTICLE.CODEARTICL=@newCODEARTICL END IF @newCODESTATUS>2 AND @newCODESTATUS<5 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',,0,@newCODESTATUS,@ newWACLEUNIK,@newSTOREID,@newARTLOTID) END IF @newCODESTATUS=2 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE1,@newCODEARTICL,'Z',0,,@newCODESTATUS,@ newWACLEUNIK,@newSTOREID,@newARTLOTID) END IF (SELECT TYPELIGNE FROM Inserted)<>3 AND @newCODESTATUS<7 BEGIN IF @newCODESTATUS>2 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,@newCODESTATUS,@n ewWACLEUNIK,@newSTOREID,@newARTLOTID) END IF @newCODESTATUS=2 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',0,@newQUANTITE,@newCODESTATUS,@n ewWACLEUNIK,@newSTOREID,@newARTLOTID) END END IF @DAYTOADD>0 AND @newCODESTATUS=7 BEGIN INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'Z',,0,10,@newWACLEUNIK ,@newSTOREID,@newARTLOTID) SELECT @newDATE2 Ûo.Get_Right_Date(DATEADD(day,@DAYTOADD,@newDATE2)) INSERT INTO DISPON (LOCLEUNIK, DATE1,CODEARTICL,ORDRE,QUANTITE,QUANTOPT,CODESTATUS,WACLEUNIK,STOREID,ARTLOT ID) VALUES (@newLOCLEUNIK,@newDATE2,@newCODEARTICL,'A',@newQUANTITE,0,10,@newWACLEUNIK, @newSTOREID,@newARTLOTID) END END SELECT @newCODEARTICL=(SELECT FIELD6 FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) PRINT @newCODEARTICL IF @newCODEARTICL<>"" GOTO AGAIN
-- Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
nospam
une seul remarque :
SELECT @DAYTOADD=(SELECT NAAFTER FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) SELECT @DAYTOREM=(SELECT NABEFORE FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL)
utilise plutot la requete suivante
SELECT @DAYTOADD=NAAFTER , @DAYTOREM=NABEFORE FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL
une seul remarque :
SELECT @DAYTOADD=(SELECT NAAFTER FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
SELECT @DAYTOREM=(SELECT NABEFORE FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL)
utilise plutot la requete suivante
SELECT @DAYTOADD=NAAFTER , @DAYTOREM=NABEFORE FROM ARTICLE WHERE
CODEARTICL=@newCODEARTICL
SELECT @DAYTOADD=(SELECT NAAFTER FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL) SELECT @DAYTOREM=(SELECT NABEFORE FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL)
utilise plutot la requete suivante
SELECT @DAYTOADD=NAAFTER , @DAYTOREM=NABEFORE FROM ARTICLE WHERE CODEARTICL=@newCODEARTICL