Salut,

J'ai créé un petit éditeur de formulaires dynamiques.
Formulaire
Groupe fonctionnel de champs
Champs

J'aimerais donner la possibilité à mes utilisateurs de dupliquer dans tous les freres du groupe en cours les fils de ce groupe.

J'ai essayé de passer par une CTE pour éviter une boucle mais j'ai du faire une erreur de conception car j'ai le message : TargetGroup.Id ne peut pas être lié.

J'imagine que c'est une limitation des CTE car la logique me semble correcte.

Voici la source de ma SP :

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
 
ALTER PROCEDURE IS_APP.spDynamicFormGroup
(
	@DynamicFormGroupToDuplicate int 
)
AS
BEGIN
	DECLARE 
		@tblGroupsId TABLE(Id int)
 
	DECLARE
		@FK_DynamicForm_FieldType int,
		@FK_DynamicForm_FieldConttrolType int,
		@Title nvarchar(50),
		@Length int,
		@minValue nvarchar(50),
		@maxValue nvarchar(50),
		@Required bit,
		@IconURL nvarchar(127),
		@MessageMissing nvarchar(127),
		@MessageWrongType nvarchar(127),
		@MessageUnderLowerBound nvarchar(127),
		@MessageOverUpperBound nvarchar(127),
		@SortIndex int	
 
	INSERT INTO @tblGroupsId (Id)
		SELECT 
		G.Id
	FROM DynamicForm_Group G
	WHERE
		G.Id <> @DynamicFormGroupToDuplicate
		AND
		G.FK_DynamicForm = (SELECT FK_DynamicForm FROM DynamicForm_Group WHERE Id = @DynamicFormGroupToDuplicate);	
 
	WITH TargetGroup AS (
		SELECT Id
		FROM @tblGroupsId
	) INSERT INTO IS_APP.DynamicForm_Fields 
		 (
			FK_DynamicForm_Group,
			FK_DynamicForm_FieldConttrolType,
			FK_DynamicForm_FieldType,
			IconURL,
			Length,
			maxValue,
			MessageMissing,
			MessageOverUpperBound,
			MessageWrongType,
			minValue,
			Required,
			SortIndex,
			Title
		)
		SELECT 
			TargetGroup.Id, <---------- PROBLEME ICI
			FK_DynamicForm_FieldConttrolType,
			FK_DynamicForm_FieldType,
			IconURL,
			Length,
			maxValue,
			MessageMissing,
			MessageOverUpperBound,
			MessageWrongType,
			minValue,
			Required,
			SortIndex,
			Title
		FROM
			IS_APP.DynamicForm_Field
		WHERE
			FK_DynamicForm_Group = @DynamicFormGroupToDuplicate
En fait, ma première requête récupère les ID des groupes auxquels je dois associer les champs à rattacher.

La seconde insère tous les champs issus du groupe dont il faut dupliquer les champs dans la table des champs en utilisant le Id du groupe issu de la CTE.

Je ne comprends pas pourquoi une erreur de liaison se produit.

Quelqu'un pourrait-il m'aider ?

D'avance merci

Laurent Jordi