Bonjour,
Je dois insérer dans une table (newletter)des lignes d'une autre table(PNR_TABLE) qui est alimentée tout le temps,le principe de partition est le suivant:
1/dans un premier lieu je sélectionne toutes les valeurs du champ EMAIL de "PNR_TABLE" et je les insére dans le champ "email" de "newletter" avec section=0;
2/je sélectionne les toutes les valeurs du champ EMAIL de "PNR_TABLE" ou le numéro de la carte de credit existe et je les insére dans le champ "email" de "newletter" avec section=1;
3/je sélectionne les toutes les valeurs du champ EMAIL de "PNR_TABLE" ou le numéro de la carte de credit est vide et je les insére dans le champ "email" de "newletter" avec section=2;
Mon code est le suivantCe code a fonctionné (j'avoue qu'il est primitif!!!!!)pour une insértion dans la table "newletter";mais le problème est comment l'améliorer pour qu'il puisse insérer les nouvelles valeurs ajoutées à la table "PNR_TABLE" sans avoir cet erreur:
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 <!--#INCLUDE file="connexion.inc" --> <% Const adOpenForwardOnly = 0 Const adOpenKeyset = 1 Const adOpenDynamic = 2 Const adOpenStatic = 3 Const adLockReadOnly = 1 Const adLockPessimistic = 2 Const adLockOptimistic = 3 Const adLockBatchOptimistic = 4 Set Rs_addemail = Server.CreateObject("ADODB.Recordset") Rs_addemail.ActiveConnection = my_conn Rs_addemail.CursorType = adOpenKeyset Rs_addemail.LockType = adLockPessimistic Rs_addemail.CursorLocation = 2 Rs_addemail.Source = "Newsletter" Rs_addemail.Open sql = "SELECT distinct(EMAIL) from PNR_TABLE" set res=my_conn.execute(sql) res.MoveFirst while not res.eof and not res.bof Rs_addemail.AddNew Rs_addemail("email") =res(0) Rs_addemail("section") ="0" res.movenext Rs_addemail.Update wend sql2 = "SELECT distinct(EMAIL) from PNR_TABLE where CREDIT_CARD IS NOT NULL" set res2=my_conn.execute(sql2) res2.MoveFirst while not res2.eof and not res2.bof Rs_addemail.AddNew Rs_addemail("email") =res2(0) Rs_addemail("section") ="1" res2.movenext Rs_addemail.Update wend sql3 = "SELECT distinct(EMAIL) from PNR_TABLE where CREDIT_CARD IS NULL" set res3=my_conn.execute(sql3) res3.MoveFirst while not res3.eof and not res3.bof Rs_addemail.AddNew Rs_addemail("email") =res3(0) Rs_addemail("section") ="2" res3.movenext Rs_addemail.Update wend Rs_addemail.Close my_conn.close Set Rs_addemail = Nothing set my_conn = nothing %>et qui est une erreur normale puisqu'il y'a tentative de reinsértion de lignes existantes déjà sachant que g défini les champs "email+section "de la table "newsletter" comme clé composée!!Type d'erreur :
Microsoft OLE DB Provider for ODBC Drivers (0x80040E2F)
[Microsoft][Pilote ODBC Microsoft Access] Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez.
/toussa_proj/index.asp, line 36
Alors est-ce qu'il y'a quelqu'un ayant la gentillesse de me suggérer une optimisation de ce code ou une autre solution pour faire la migration des données de "PNR_TABLE" vers "newletter"????????????![]()
Partager