Bonjour tout le monde,
J'ai une table qui contient des numero de clients, et les dates d'envoie de lettre qui correspont à chaque client... Tout fonctionnait tres bien, jusqu'au jour où je me trouve devant un cas où on peut envoyer des lettres à la meme personne plus d'une fois...
j'ai pensé d'abord ajouter des champs, date1, date2, date3... mais jusqu'où ? je ne sais pas combien de fois on va envoyer des lettre à la meme personne, donc l'idée etait de creer une table qui va contenir 2 champs: id_client et date, avec une clé primaire concatenée des 2 champs... donc chaque fois qu'on envoie une nouvelle fois, j'insert une ligne dans la nouvelle table avec le id_client + l'ancienne date qu'il y avait dans la table principale, puis je peut modifier la date dans la table principale...
resultat de la manipulation: dans ma table principale j'ai juste la date du dernier envoie, et si je veux voir l'historique des envoie je n'ai qu'à consulter la 2eme table...
voila c'etait la situation, j'utilise un package DTS qui s'occupe de cette mis à jour + insertion, sauf qu'il y a peut etre une erreur dans la logique ... quand j'ai executé ce code la derniere fois, il a été modifier le contenu de toute ma table, alors que ça doit toucher juste une selection definie, voici le 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 DECLARE @send_date smalldatetime, @id_client nvarchar(12) DECLARE lineCursor CURSOR local FOR SELECT id_client, send_date FROM tablePrincipale WHERE sending = 'j' --ceci est la condition de selection open linecursor fetch next from linecursor into @id_client, @send_date while @@fetch_status = 0 begin if @send_date is not null -- s'il y a deja une date d'envoi begin insert into tableSecondaire values (@id_client, @send_date) end UPDATE tablePrincipale SET send_date = CAST(LEFT(GETDATE(), 12) AS smalldatetime) -- et dans tout les cas, je met à jour les dates avec la date d'aujourdui fetch next from linecursor into @kvnr, @send_date end close linecursor
voila, j'espere que j'ai assez clair.
vos conseils et remarques seront tres appreciés!
Merci beaucoup
Partager