Bonjour,

J'essaie désepérément de Compléter les champs vides de lignes à partir de la ligne qui les précèdent.
Sans que les lignes qui ne sont pas complétement vides aient leur données existantes écrasées.
Et mon problème c'est que j'écrase les données existantes.

Donc pour faire court j'ai ça:

InfoID AdrTypeID Adresse1 Adresse2 Adresse3 Ville Province CodePostal Pays Telephone1 Telephone2 Mobile Fax Email WebSite IsTemplate CCEmail BCcEmail
1 MAIN 1 rue du moulin CEDEX 2 LYON RHONE 69001 FR 0365666666 0 NULL NULL
1 MAIL
2 MAIN 33 bd Jean Jaures Belfort Territoire de Belfort 90000 FR 0389023658 0 NULL NULL
2 MAIL
3 MAIN 63 rue d'Alésia XIVeme Arrondissement PARIS ILE DE FRANCE 75014 FR 0142435869 0 NULL NULL
3 MAIL 2 Avenue du G. Leclerc PARIS 0142435869

Et je voudrais obtenir ça:

InfoID AdrTypeID Adresse1 Adresse2 Adresse3 Ville Province CodePostal Pays Telephone1 Telephone2 Mobile Fax Email WebSite IsTemplate CCEmail BCcEmail
1 MAIN 1 rue du moulin CEDEX 2 LYON RHONE 69001 FR 0365666666 0 NULL NULL
1 MAIL 1 rue du moulin CEDEX 2 LYON RHONE 69001 FR 0365666666 0 NULL NULL
2 MAIN 33 bd Jean Jaures Belfort Territoire de Belfort 90000 FR 0365666666 0 NULL NULL
2 MAIL 33 bd Jean Jaures Belfort Territoire de Belfort 90000 FR 0365666666 0 NULL NULL
3 MAIN 63 rue d'Alésia XIVeme Arrondissement PARIS ILE DE FRANCE 75014 FR 0142435869 0 NULL NULL
3 MAIL 2 Avenue du G. Leclerc PARIS 0142435869

Pouvez-vous m'aiguiller sur ce qui cloche dans mon code? Merci.


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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
DECLARE     @InfoID int, 
		@Adresse1_Main      nvarchar(100),
		@Adresse2_Main      nvarchar(100),
		@Adresse3_Main      nvarchar(100),
		@Ville_Main          nvarchar(100),
		@Province_Main nvarchar(100),
                                @CodePostal_Main       nvarchar (30),
		@Pays_Main       nvarchar(100),
		@Telephone1_Main  nvarchar (50),
		@Telephone2_Main  nvarchar (50),
		@Mobile_Main  nvarchar (50),
		@Fax_Main     nvarchar (50),
		@Email_Main         nvarchar(100),
		@WebSite_Main       nvarchar(100),
		@CCEmail_Main       nvarchar(100),
		@BCcEmail_Main      nvarchar(100)  
 
DECLARE Mailing_cursor CURSOR FAST_FORWARD FOR  
 
SELECT [InfoID]            as InfoID
             ,[Adresse1]      as Adresse1_Main
             ,[Adresse2]      as Adresse2_Main
             ,[Adresse3]      as Adresse3_Main
             ,[Ville]              as Ville_Main
             ,[Province]        as Province_Main
             ,[CodePostal]    as CodePostal_Main
             ,[Pays]                 as  Pays_Main
             ,[Telephone1]  as Telephone1_Main
             ,[Telephone2]  as Telephone2_Main
             ,[Mobile]  as Mobile_Main
             ,[Fax]     as Fax_Main
             ,[Email]         as Email_Main
             ,[WebSite]       as WebSite_Main
             ,[CCEmail]       as CCEmail_Main
             ,[BCcEmail]      as BCcEmail_Main
  FROM [Adresse]
  WHERE [AdrTypeID] = 'MAIN'
	AND InfoID IN (SELECT InfoID--, COUNT(*)
				  FROM  [dbo].[Adresse]
				  WHERE [AdrTypeID] IN ('MAIN','MAIL')
				  GROUP BY InfoID
				  HAVING COUNT(*) > 1)
 
OPEN Mailing_cursor  
 
FETCH NEXT FROM Mailing_cursor   
INTO @InfoID, @Adresse1_Main, @Adresse2_Main, @Adresse3_Main, @Ville_Main, @Province_Main, @CodePostal_Main, @Pays_Main, @Telephone1_Main, @Telephon2_Main, @Mobile_Main, @Fax_Main, 
     @Email_Main, @WebSite_Main, @CCEmail_Main, @BCcEmail_Main   
 
WHILE @@FETCH_STATUS = 0
BEGIN  
 
       UPDATE Adresse
       SET 
	   Adresse1 = @Adresse1_Main
 
	   WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
		 AND (Adresse1 IS NULL OR Adresse1 <> '')
 
       UPDATE Adresse
       SET 
	   Adresse2 = @Adresse2_Main
 
       WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (Adresse2 IS NULL OR Adresse2 <> '')
 
       UPDATE Adresse
       SET 
	   Adresse3 = @Adresse3_Main
 
       WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (Adresse3 IS NULL OR Adresse3 <> '')
 
       UPDATE Adresse
       SET 
	   Ville = @Ville_Main
 
       WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (Ville IS NULL OR Ville <> '')
 
       UPDATE Adresse
       SET 
	   Province = @Province_Main
 
       WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (Province IS NULL OR Province <> '')
 
       UPDATE Adresse
       SET 
	   CodePostal= @CodePostal_Main
 
       WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (CodePostal IS NULL OR CodePostal <> '')
 
       UPDATE Adresse
       SET 
	   Pays = @Pays_Main
 
       WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (Pays  IS NULL OR Pays <> '')
 
       UPDATE Adresse
       SET 
	   Telephone1 = @Telephone1_Main
 
       WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (Telephone1 IS NULL OR Telephone1 <> '')
 
       UPDATE Adresse
       SET 
	   Telephone2 = @Telephone2_Main
 
      WHERE InfoID= @InfoID 
	     AND AdrTypeID = 'MAIL' 
	     AND (Telephone2 IS NULL OR Telephone2 <> '')
 
       UPDATE Adresse
       SET 
	   Mobile = @Mobile_Main
 
      WHERE InfoID= @InfoID 
	     AND AdrTypeID = 'MAIL' 
	     AND (Mobile IS NULL OR Mobile <> '')
 
       UPDATE Adresse
       SET 
	   Fax = @Fax_Main
 
      WHERE InfoID= @InfoID
	     AND AdrTypeID = 'MAIL' 
	     AND (Fax IS NULL OR Fax <> '')
 
       UPDATE Adresse
       SET 
	   Email = @Email_Main
 
      WHERE InfoID= @InfoID 
	     AND AdrTypeID = 'MAIL' 
	     AND (Email IS NULL OR Email <> '')
 
       UPDATE Adresse
       SET 
	   WebSite = @WebSite_Main
 
      WHERE InfoID= @InfoID 
	     AND AdrTypeID = 'MAIL' 
	     AND (WebSite IS NULL OR WebSite <> '')
 
       UPDATE Adresse
       SET 
	   CCEmail = @CCEmail_Main
 
      WHERE InfoID= @InfoID 
	     AND AdrTypeID = 'MAIL' 
	     AND (CCEmail IS NULL OR CCEmail <> '')
 
       UPDATE Adresse 
       SET 
	   BCcEmail = @BCcEmail_Main
 
      WHERE InfoID= @InfoID 
	     AND AdrTypeID = 'MAIL' 
	     AND (BCcEmail IS NULL OR BCcEmail <> '')
 
	  FETCH NEXT FROM Mailing_cursor   
	  INTO @InfoID, @Adresse1_Main, @Adresse2_Main, @Adresse3_Main, @Ville_Main, @Province_Main, @CodePostal_Main, @Pays_Main, @Telephone1_Main, @Telephon2_Main, @Mobile_Main, @Fax_Main, 
     @Email_Main, @WebSite_Main, @CCEmail_Main, @BCcEmail_Main   
 
 
END   
 
CLOSE Mailing_cursor;  
DEALLOCATE Mailing_cursor;