Modérateurs: Super Modérateur, Modérateurs







cathy a écrit:Penses-tu qu'il peut y avoir des conséquences sur la base par la suite ?
Connaitrais-tu la table qui stocke les longueurs des paramétres de paie, que je puisse augmenter la taille..
Car si je change sur SQL, l'utilisateur en création directe depuis la paie sera toujours bloqué à cette longueur..
-- Renumérotation des salariés par date d'ancienneté
USE SagePaieSQL
GO
SET NOCOUNT ON
-- Archivage ancien matricule dans T10LIB05
UPDATE
T_ZONESLIBRES
SET
St10_5 = MatriculeSalarie
FROM
T_SAL
WHERE
NumSalarie = SA_CompteurNumero
SET NOCOUNT ON
-- MAJ masque matricule
UPDATE
T_STRUCTUREMASQUE
SET
Forme = 'EEEEE',
Longueur = 5,
Justification = 1, -- 0 Ă gauche, 1 Ă droite
Car_Fill_E = '0' -- Lettre finale filler selon format (E, A ou L)
WHERE
TypeMasque = 10 -- Id du masque
-- Renumérotation à partir de @NewMat
DECLARE
@Mat TMatricule,
@Cpt INT,
@NewMat TMatricule
SET @NewMat = '10000'
SET @Cpt = 0
DECLARE C CURSOR FOR
SELECT
S.MatriculeSalarie
FROM
T_SAL S
INNER JOIN
T_HST_INFOSSOCIETE I
ON
S.SA_CompteurNumero = I.NumSalarie
AND
I.InfoEnCours = 1
ORDER BY
I.DateAnciennete, -- I.DateEmbauche pour travailler sur la date d'entrée
S.Nom
OPEN C
FETCH NEXT FROM C INTO @Mat
WHILE @@FETCH_STATUS = 0
BEGIN
-- Mise à jour de la table des salariés
UPDATE
T_SAL
SET
MatriculeSalarie = @NewMat
WHERE
MatriculeSalarie = @Mat
-- Mise à jour de l'analytique si ventilation par salarié
-- Ventilations en cours
UPDATE
T_VAN
SET
CompteGeneral = @NewMat
WHERE
CompteGeneral = @Mat
AND
Ventilation = 6
-- Historiques
UPDATE
T_HVAN
SET
CompteGeneral = @NewMat
WHERE
CompteGeneral = @Mat
AND
Ventilation = 6
SET @Newmat = @NewMat + 1
SET @Cpt = @Cpt + 1
FETCH NEXT FROM C INTO @Mat
END
CLOSE C
DEALLOCATE C
PRINT CAST(@Cpt as VARCHAR)+' matricules mis Ă jour'


cathy a écrit:je copie ton code et jexecute la requête direct en l'état sur ma base?


SET @NewMat = RIGHT('00000000' + CAST(@NewMat AS VARCHAR), 8)SET @Newmat = @NewMat + 1UPDATE T_SAL SET MatriculeSalarie = RIGHT('00000000' + CAST(MatriculeSalarie AS VARCHAR), 8)
UPDATE T_VAN SET CompteGeneral = RIGHT('00000000' + CAST(CompteGeneral AS VARCHAR), 8) WHERE Ventilation = 6
UPDATE T_HVAN SET CompteGeneral = RIGHT('00000000' + CAST(CompteGeneral AS VARCHAR), 8) WHERE Ventilation = 6


-- Renumérotation des salariés par date d'ancienneté
USE SagePaieSQL
GO
SET NOCOUNT ON
-- Archivage ancien matricule dans T10LIB05
UPDATE
T_ZONESLIBRES
SET
St10_5 = MatriculeSalarie
FROM
T_SAL
WHERE
NumSalarie = SA_CompteurNumero
SET NOCOUNT ON
-- MAJ masque matricule
UPDATE
T_STRUCTUREMASQUE
SET
Forme = 'EEEEE',
Longueur = 5,
Justification = 1, -- 0 Ă gauche, 1 Ă droite
Car_Fill_E = '0' -- Lettre finale filler selon format (E, A ou L)
WHERE
TypeMasque = 10 -- Id du masque
-- Renumérotation à partir de @NewMat
DECLARE
@Mat TMatricule,
@Cpt INT,
@NewMat TMatricule
SET @NewMat = '10000'
SET @Cpt = 0
DECLARE C CURSOR FOR
SELECT
S.MatriculeSalarie
FROM
T_SAL S
INNER JOIN
T_HST_INFOSSOCIETE I
ON
S.SA_CompteurNumero = I.NumSalarie
AND
I.InfoEnCours = 1
ORDER BY
I.DateAnciennete, -- I.DateEmbauche pour travailler sur la date d'entrée
S.Nom
OPEN C
FETCH NEXT FROM C INTO @Mat
WHILE @@FETCH_STATUS = 0
BEGIN
-- Mise à jour de la table des salariés
UPDATE
T_SAL
SET
MatriculeSalarie = @NewMat
WHERE
MatriculeSalarie = @Mat
-- Mise à jour de l'analytique si ventilation par salarié
-- Ventilations en cours
UPDATE
T_VAN
SET
CompteGeneral = @NewMat
WHERE
CompteGeneral = @Mat
AND
Ventilation = 6
-- Historiques
UPDATE
T_HVAN
SET
CompteGeneral = @NewMat
WHERE
CompteGeneral = @Mat
AND
Ventilation = 6
SET @Newmat = @NewMat + 1
SET @NewMat = RIGHT('00000000' + CAST(@NewMat AS VARCHAR), 8)
SET @Cpt = @Cpt + 1
FETCH NEXT FROM C INTO @Mat
END
CLOSE C
DEALLOCATE C
PRINT CAST(@Cpt as VARCHAR)+' matricules mis Ă jour'



cathy a écrit:Imaginons que les matricules existants dans la paie soient déjà sur 5 caractères et que je veuille juste ajouter 3 caractères numériques devant (toujours les 3 caractères du code entité).. que dois-je changer dans la requete ?
-- Renumérotation des salariés par préfixe
USE SagePaieSQL
GO
-- Préfixe
DECLARE @Prfx VARCHAR(3)
SET @Prfx = '456'
SET NOCOUNT ON
-- Archivage ancien matricule dans T10LIB05
UPDATE
T_ZONESLIBRES
SET
St10_5 = MatriculeSalarie
FROM
T_SAL
WHERE
NumSalarie = SA_CompteurNumero
-- MAJ masque matricule
UPDATE
T_STRUCTUREMASQUE
SET
Forme = 'EEEEEEEE',
Longueur = 8,
Justification = 1, -- 0 Ă gauche, 1 Ă droite
Car_Fill_E = '0' -- Lettre finale filler selon format (E, A ou L)
WHERE
TypeMasque = 10 -- Id du masque
-- Mise Ă jour des tables
UPDATE T_SAL SET MatriculeSalarie = @Prfx + RIGHT('00000' + CAST(MatriculeSalarie AS VARCHAR), 5)
UPDATE T_VAN SET CompteGeneral = @Prfx + RIGHT('00000' + CAST(CompteGeneral AS VARCHAR), 5)
WHERE Ventilation = 6
UPDATE T_HVAN SET CompteGeneral = @Prfx + RIGHT('00000' + CAST(CompteGeneral AS VARCHAR), 5)
WHERE Ventilation = 6
cathy a écrit:j'ai aussi le cas d'une société qui gère 8 caractères pour les matricules et je souhaite remplacer les 3 premiers par le code que je souhaite en conservant les 5 derniers..
-- Renumérotation des salariés par préfixe sans modification du format
USE SagePaieSQL
GO
-- Préfixe
DECLARE @Prfx VARCHAR(3)
SET @Prfx = '789'
SET NOCOUNT ON
-- Archivage ancien matricule dans T10LIB05
UPDATE
T_ZONESLIBRES
SET
St10_5 = MatriculeSalarie
FROM
T_SAL
WHERE
NumSalarie = SA_CompteurNumero
-- Mise Ă jour des tables
UPDATE T_SAL SET MatriculeSalarie = @Prfx + RIGHT(CAST(MatriculeSalarie AS VARCHAR), 5)
UPDATE T_VAN SET CompteGeneral = @Prfx + RIGHT(CAST(CompteGeneral AS VARCHAR), 5)
WHERE Ventilation = 6
UPDATE T_HVAN SET CompteGeneral = @Prfx + RIGHT(CAST(CompteGeneral AS VARCHAR), 5)
WHERE Ventilation = 6



SELECT @@VERSION
GO
sp_helpsort
GO







Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités