Bonjour,

Dans un formulaire j’ai crée un bouton qui lance ds un 1er temps une requête de creation de table puis une requête de mise a jour comme ceci :

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
'bouton requête mise à jour et creation table
Private Sub CommandeMAJ_Click()
On Error GoTo Err_CommandeMAJ_Click
 
           If IsNull(Me.DateA) Then
            MsgBox "Entrez une Date"
            Else
 
'creation de la table "R4-Table" 
    Dim CreaTableR4 As String
    CreaTableR4 = "R4-Extraction Table"
    DoCmd.OpenQuery CreaTableR4, acNormal, acEdit
 
'Mise a jour ds la foulée de la table TDATA
                Dim stDocName As String
                stDocName = "R1-MAJ"
                DoCmd.OpenQuery stDocName, acNormal, acEdit
          End If
Exit_CommandeMAJ_Click:
    Exit Sub
 
Err_CommandeMAJ_Click:
    MsgBox Err.Description
    Resume Exit_CommandeMAJ_Click
 
End Sub
Je voudrais écrire directement le SQL de la requête mise à jour "R1-MAJ" ds le code ci-dessus pour des raisons de sécurité dont voici le code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
UPDATE [R4-Table] LEFT JOIN TDATA ON ([R4-Table].Ident = TDATA.Ident) 
AND ([R4-Table].dateFormulaire = TDATA.Date) 
SET TDATA.[champ1] = [R4-Table]!valeur1, 
TDATA.[champ2] = [R4-Table]!valeur2, 
TDATA.[champ3] = [R4-Table]!valeur3, 
TDATA.DatMaj = Now();
Il est arrivé qu’un petit curieux réponde « non » lors de la creation de la table à la question
« vous allez coller x lignes ds la nelle table
(A ce moment il n’y a pas eu de création de la table [R4-Table].)
Puis d’aller visualiser la requête "R1-MAJ" en faisant glisser ou redimensionner par exemple une table de cette requête en mode creation puis d’enregistrer la modif de la structure

Au lancement suivant :creation de table ok 20 lignes environ ok
Au lancement de la 2eme phase MAJ ,mise a jour de plusieurs millier de lignes ….
Table TDATA modifiée complètement

En effet les 2 jointures avaient disparues suite à cette manip
C’est pourquoi je souhaiterais écrire cette 2eme phase en VBA mais c’est une autre histoire…

merci pour votre aide