Bonjour,
J'importe une table DB2 dans une table temporaire access (que je détruit en fin de sub), puis, je souhaiterais mettre à jour ma table définitive uniquement avec les données qui difèrent entre les 2 tables. Tout marche impécable tant qu'il existe une différence entre les deux tables. Par contre, si il n'existe aucune données supplémentaire importées dans la table temporaire alors ma requète tourne sans fin. Pourriez-vous me dire comment je peux poser une condition svp ?
Voici mon code pour info :
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 'Déclaration des variables--------------------------------------------- Dim fichier As String Dim Chemin As String Dim check As Boolean Dim rep As String Dim req1 As String Dim rst1, rst2 As DAO.Recordset '****************************************************************************************************************** 'Importation de la table CLIENT.DBF dans Access--------------------------- Chemin = "C:\" fichier = TROUVERFICHIER(Chemin, "*.dbf") rep = Left(fichier, Len(fichier) - 11) DoCmd.TransferDatabase acImport, "dBase III", rep, acTable, "CLIENT.DBF", "T_CLI", False 'Construction de la requête pour la mise à jour de la table T_CLIENT--- req1 = "Select T_CLI.* From T_CLI Where T_CLI.SIRET Not In (Select T_CLIENT.SIRET From T_CLIENT);" check = False Set rst1 = CurrentDb.OpenRecordset(req1, dbOpenDynaset) Set rst2 = CurrentDb.OpenRecordset("T_CLIENT", dbOpenDynaset) 'Parcours de la requète "req1" pour dupliquer dans "T_CLIENT" l'ensemble des informations nouvelles. If (rst1.RecordCount > 0) Then Do Until rst1.EOF With rst2 .AddNew rst2!SIRET = rst1!SIRET rst2!SOCIETE1 = rst1!SOCIETE1 rst2!SOCIETE2 = rst1!SOCIETE2 rst2!ADRESSE1 = rst1!ADRESSE1 rst2!ADRESSE2 = rst1!ADRESSE2 rst2!CPOSTAL = rst1!CPOSTAL rst2!VILLE = rst1!VILLE rst2!NIC = rst1!NIC rst2!SIREN = rst1!SIREN .Update End With rst1.MoveNext Loop Else check = True End If ' Affichage du message de mise à jour If check = True Then MsgBox (" Pas de nouvelles données client!") Else MsgBox (" Données client bien importées !") End If ' Libération des variables objets rst1.Close Set rst1 = Nothing rst2.Close Set rst2 = Nothing ' Destruction de la table temporaire T_CLI----------------------------- DoCmd.DeleteObject acTable, "T_CLI"
Partager