Bonjour;
Je reviens vers le forum pour demander de l'aide à propos d'un traitement que je souhaiterais effectuer.
J'ai 2 tables, disons Table1 et Table2.
Table1(id,champsN,SSCode#,Name,Value)
Table2(SSCode,coef)
La clé primaire de la Table2 est etrangére dans la Table1.
Je souhaiterais faire ceci :
Faire tant que le [SSCode] de la Table2 et la Table1,
-> Ils sont pareils,
Tester si le [coef] de ce [SSCode] de la Table1 = 0
Si oui :
- Ajouter à l'[id] de cette ligne, de la Table1 un "T" à la fin.
- Ajouter le meme [champsN]
- Ajouter le meme [SSCode]
- Affecter à [Name] la chaine "Trade"
- Ajouter à [Value] la meme valeur de cette ligne.
Sinon :
- Ajouter à l'[id] de cette ligne, de la Table1 un "T" à la fin.
- Ajouter le meme [champsN]
- Ajouter le meme [SSCode]
- Affecter à [Name] la chaine "Trade"
- Affecter à [Value] = [Value] de cette ligne / [coef] de ce meme SSCode
Fin Si
Voila, en gros c'est ça !
Voila le SSCode que j'ai mis à disposition :
A noter que la requete rst peut retourner plusieurs enregistrements, car un [SSCode] peut etre affecté à plusieurs ligne de Table1.
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 Sub maMethode() DoCmd.RunSQL "DELETE * FROM Table1 WHERE id LIKE '*T'" Set rst1 = db.OpenRecordset("SELECT * FROM Table1") Set rst2 = db.OpenRecordset("SELECT * FROM Table2") Do Do Set rst = db.OpenRecordset("SELECT coef, T1.*, [Value]/coef as Trade FROM Table2 T2,Table1 T1 WHERE T2.[SSCode]=T1.[SSCode] AND T1.[SSCode] LIKE '" & rst2.Fields("SSCode") & "' AND pd.[Name] LIKE 'PR'") If rst.RecordCount > 0 Then Do If rst.Fields("coef") <> 0 Then rst1.AddNew rst1.Fields("id") = rst.Fields("id") & "T" rst1.Fields("champsN") = rst.Fields("champsN") rst1.Fields("Name") = "TRADE" rst1.Fields("Value") = rst.Fields("Trade") rst1.Update Else rst1.AddNew rst1.Fields("id") = rst.Fields("id") & "T" rst1.Fields("ChampsN") = rst.Fields("champsN") rst1.Fields("Name") = "TRADE" rst1.Fields("Value") = rst.Fields("Value") rst1.Update End If rst.MoveNext Loop Until rst.EOF End If rst2.MoveNext Loop Until rst2.EOF Loop Until rst1.EOF rst2.Close rst1.Close rst.Close End Sub
Apres maintes tentatives, j'ai soit l'Erreur 3022 (alors que normalement ça doit pas etre...), soit une boucle infini qui bloque carement Access; et apres verification, j'ai constaté que quelques données ont bien été inseré dans la table !!
Je pense avoir une erreur au niveau des boucles do while ou au niveau des MoveNext ...
Si vous avez des propositions ^^"
Cordialement.
Partager