Bonjour à tous,
Je suis novice sous sql server. Apres de longue heure d'acharnement je n'arrive pas à résoudre mon problème. Si l'un d'entre vous peut m'aider
J'ai 2 boucles while imbriquée mais lorsque j'insere une ligne la variable @k ne s'incrémente pas pourquoi? je suis perplexe car ma variable @l s'incrémente tres bien.
En fait j'ai l'impression que c'est les conversions qui posent problemes mais je comprend pas pourquoi.
Merci d'avance,
Vincent

ci joint une partie de mon code:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
delete from workinghours;
declare @nomdesignation varchar(50);
declare @valeur float;
declare @id_tab int;
declare @finparcour int;
declare @finparcourenr int;
declare @i int;
declare @j int;
SELECT @finparcour= (SELECT MAX(id_correspondance) FROM correspondance)
SELECT @finparcourenr= (SELECT MAX(id_enr) FROM enregistrement)
 
declare @unite int;
declare @moisval int;
declare @anneeval int;
declare @nom_tab nvarchar(50);
declare @table as nvarchar(50)
declare @SQL nvarchar(4000)
declare @SQL2 nvarchar(4000)
declare @SQL3 nvarchar(4000)
declare @SQL4 nvarchar(4000)
declare @SQL5 nvarchar(4000)
declare @SQL6 nvarchar(4000)
declare @SQL7 nvarchar(4000)
declare @SQL8 nvarchar(4000)
declare @SQL9 nvarchar(4000)
declare @SQL10 nvarchar(4000)
declare @SQL11 nvarchar(4000)
declare @SQL12 nvarchar(4000)
declare @SQL13 nvarchar(4000)
declare @pTableName nvarchar(4000);
 
declare @champ nvarchar(4000);
DECLARE @Para NVARCHAR(500)
SET @Para = N' @RESU nvarchar(4000) OUTPUT'
declare @presu nvarchar(4000);
SET  @presu = ''
 
 
 
 
select @i = 1;
SELECT @j= (SELECT min(id_enr) FROM enregistrement)
 
WHILE (@i <=@finparcour) 
BEGIN
 
  	SELECT @nomdesignation=(SELECT designation FROM correspondance WHERE id_correspondance=@i)
	SELECT @id_tab=(SELECT id_tableau FROM correspondance WHERE id_correspondance=@i)
	SET @nom_tab=(SELECT nomtableau FROM tableau WHERE id_tableau=@id_tab)
	SELECT @unite=(SELECT id_unite FROM correspondance WHERE id_correspondance=@i)
	declare @k nvarchar(50);
	SET @pTableName=@nom_tab;
	select @k=convert(int,@i);
		WHILE @j<=@finparcourenr 
		BEGIN
			declare @anneeval1 nvarchar(50)
			declare @moisval1 nvarchar(50)
			declare @valeur1 nvarchar (50)
			declare @l nvarchar(50)
			select @l=convert(int,@j)
			SET  @pRESU = ''
			SET @SQL = N'SELECT '+ @nomdesignation + ' FROM enregistrement WHERE id_enr=' + @l +''
			exec sp_executesql @SQL, @PARA,
			@RESU = @pRESU OUTPUT
			select @valeur=@pRESU
			select @valeur1=convert(nvarchar,@valeur)
			SELECT @moisval= (
                          SELECT     mois
                           FROM         enregistrement
                           WHERE     (id_enr = @j))
			SELECT @anneeval=(SELECT annee FROM enregistrement WHERE (id_enr=@j) )
			select @moisval1=convert(nvarchar,@moisval)
			select @anneeval1=convert(nvarchar,@anneeval)
			If @anneeval IS NOT NULL
				BEGIN
					IF ( @id_tab = 1)
						BEGIN	
							SET  @pRESU = ''
							SET @SQL9 = N'SELECT id_ent FROM '+ @pTableName + ' WHERE id_ent= ' + @k + ' AND  mois= ' + @moisval1 + ' AND annee= ' + @anneeval1 +''
							exec sp_executesql @SQL9, @PARA,
							@RESU = @pRESU OUTPUT
							select @k=convert(int,@i);
							SET @SQL10='INSERT INTO workinghours ( id_ent , montant , annee , mois ) VALUES ('+@k+', 3 , '+@l+' , 9 )'
							exec sp_executesql @SQL10	
						END	
 
				END
		SET @j = @j + 1;
		END;
SET @i = @i + 1;
END;