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"