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;
Partager