Bonjour marot
Si j'ai bien compris ce que tu proposes, j'ai
créé une requête reqPourModifSQL contenant un champ issu de ma table principale (simplement pour le fait d'exister)
modifier la requête sql de mon état en y incluant la procédure proposée, ceci donne :
Quand je veux éditer mon état, je complète l'inputbox en saisissant 31/08/2019 (c'est la date qui m'intéresse aujourd'hui)
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 Private Sub Report_Open(Cancel As Integer) On Error GoTo Err Dim strSql As String Dim DateInscription As Date DateInscription = InputBox("Veuillez saisir la date de départ des mises à jour au format jj/mm/aaaa ") strSql = "" & _ "SELECT DISTINCTROW T_Nouvelles_valeurs.MiseAJour, T_Nouvelles_valeurs.N°Adherent, Requête1.MaxDeMiseAJour, [T Adhérents].MotifRadiation, " & _ "T_Nouvelles_valeurs.Titre, T_Nouvelles_valeurs.NomAdherent, T_Nouvelles_valeurs.PrenomAdherent, T_Anciennes_valeurs.Adresse, T_Nouvelles_valeurs.Adresse AS NouvAdresse, " & _ "IIf([T_Nouvelles_valeurs.Adresse]<>[T_Anciennes_valeurs.Adresse],'diffAdresse','ok') AS diffAdresse, " & _ "IIf(Mid([T_Anciennes_valeurs.CP],3,1)='-',Mid([T_Anciennes_valeurs.CP],InStr([T_Anciennes_valeurs.CP],'-')+1),[T_Anciennes_valeurs.CP]) AS CP, " & _ "IIf(Mid([T_Nouvelles_valeurs.CP],3,1)='-',Mid([T_Nouvelles_valeurs.CP],InStr([T_Nouvelles_valeurs.CP],'-')+1),[T_Nouvelles_valeurs.CP]) AS NouvCP, " & _ "IIf([T_Nouvelles_valeurs.CP]<>[T_Anciennes_valeurs.CP],'diffCP','ok') AS diffCP, T_Anciennes_valeurs.Ville, T_Nouvelles_valeurs.Ville AS NouvVille, " & _ "IIf([T_Nouvelles_valeurs.Ville]<>[T_Anciennes_valeurs.Ville],'diffVille','ok') AS diffVille, T_Anciennes_valeurs.Pays, T_Nouvelles_valeurs.Pays AS NouvPays, " & _ "IIf([T_Nouvelles_valeurs.Pays]<>[T_Anciennes_valeurs.Pays],'diffPays','ok') AS diffPays, T_Anciennes_valeurs.Telephone, T_Nouvelles_valeurs.Telephone AS NouvTéléphone, " & _ "IIf([T_Nouvelles_valeurs.Telephone]<>[T_Anciennes_valeurs.Telephone],'diffTel','ok') AS diffTel, T_Anciennes_valeurs.Mobile, T_Nouvelles_valeurs.Mobile AS NouvMobile, " & _ "IIf([T_Nouvelles_valeurs.Mobile]<>[T_Anciennes_valeurs.Mobile],'diffMobile','ok') AS diffMobile, T_Anciennes_valeurs.EMail, T_Nouvelles_valeurs.EMail AS NouvEmail, " & _ "IIf([T_Nouvelles_valeurs.Email]<>[T_Anciennes_valeurs.Email],'diffEmail','ok') AS diffEmail, T_Nouvelles_valeurs.MasquerDonnees, T_Nouvelles_valeurs.Specialite, " & _ "T_Nouvelles_valeurs.DateAdhesion, T_Nouvelles_valeurs.Chemin " & _ "FROM (Requête2 INNER JOIN T_Anciennes_valeurs ON (Requête2.N°Adherent=T_Anciennes_valeurs.N°Adherent) AND (Requête2.MaxDeMiseAJour=T_Anciennes_valeurs.MiseAJour)) AND T_Nouvelles_valeurs RIGHT JOIN [T Adhérents] ON T_Nouvelles_valeurs.N°Adherent = [T Adhérents].N°Adherent, " & _ "INNER JOIN (Requête1 INNER JOIN T_Nouvelles_valeurs ON (Requête1.N°Adherent=T_Nouvelles_valeurs.N°Adherent) AND (Requête1.MaxDeMiseAJour=T_Nouvelles_valeurs.MiseAJour)) ON T_Anciennes_valeurs.N°Adherent=T_Nouvelles_valeurs.N°Adherent " & _ "WHERE (((T_Nouvelles_valeurs.MiseAJour) >= # " & ConvertUSDate(DateInscription) & "#) And ((T_Nouvelles_valeurs.MasquerDonnees) = false) And ((T_Nouvelles_valeurs.Adherent) = True))" & _ "HAVING(([T Adhérents].MotifRadiation) = "") " & _ "ORDER BY T_Nouvelles_valeurs.MiseAJour DESC;" Dim db As dao.Database: Set db = CurrentDb Dim q As dao.QueryDef: Set q = db.QueryDefs("reqPourModifSQL") 'La requête doit exister, juste n'importe quelle requête (ex : sélection de tous les champs de n'importe quelle table). q.SQL = strSql 'Copy le SQL dans la requête de "travail" Set q = Nothing db.Close: Set db = Nothing Debug.Print strSql With Me .RecordSource = strSql .Étiquette28.Caption = "Modifications aux coordonnées adhérents depuis le " & Format(DateInscription, "dd/mm/yyyy") End With Fin: Exit Sub Err: MsgBox "Erreur ouverture " & Err.Number & " " & Err.Description Resume Fin End Sub
J'ai alors le message d'erreur suivant qui s'affiche
erreur ouverture 3131 :erreur de syntaxe dans la clause FROM
Quand je fais oK 1 seule page de l'état s'affiche avec la bonne mise en page, mais où j'ai #Nom ? pour chaque champ (voir PJ)
Pour info le code suivant, issu de mon état initial avnt que j'essaye de le modifier fonctionne
Merci de ton aide.
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 Private Sub Report_Open(Cancel As Integer) On Error GoTo Err Dim strSql As String Dim DateInscription As Date DateInscription = InputBox("Veuillez saisir la date de départ des mises à jour au format jj/mm/aaaa ") strSql = "" & _ "SELECT DISTINCTROW T_Nouvelles_valeurs.MiseAJour, T_Nouvelles_valeurs.N°Adherent, Requête1.MaxDeMiseAJour, " & _ "T_Nouvelles_valeurs.Titre, T_Nouvelles_valeurs.NomAdherent, T_Nouvelles_valeurs.PrenomAdherent, T_Anciennes_valeurs.Adresse, T_Nouvelles_valeurs.Adresse AS NouvAdresse, " & _ "IIf([T_Nouvelles_valeurs.Adresse]<>[T_Anciennes_valeurs.Adresse],'diffAdresse','ok') AS diffAdresse, " & _ "IIf(Mid([T_Anciennes_valeurs.CP],3,1)='-',Mid([T_Anciennes_valeurs.CP],InStr([T_Anciennes_valeurs.CP],'-')+1),[T_Anciennes_valeurs.CP]) AS CP, " & _ "IIf(Mid([T_Nouvelles_valeurs.CP],3,1)='-',Mid([T_Nouvelles_valeurs.CP],InStr([T_Nouvelles_valeurs.CP],'-')+1),[T_Nouvelles_valeurs.CP]) AS NouvCP, " & _ "IIf([T_Nouvelles_valeurs.CP]<>[T_Anciennes_valeurs.CP],'diffCP','ok') AS diffCP, T_Anciennes_valeurs.Ville, T_Nouvelles_valeurs.Ville AS NouvVille, " & _ "IIf([T_Nouvelles_valeurs.Ville]<>[T_Anciennes_valeurs.Ville],'diffVille','ok') AS diffVille, T_Anciennes_valeurs.Pays, T_Nouvelles_valeurs.Pays AS NouvPays, " & _ "IIf([T_Nouvelles_valeurs.Pays]<>[T_Anciennes_valeurs.Pays],'diffPays','ok') AS diffPays, T_Anciennes_valeurs.Telephone, T_Nouvelles_valeurs.Telephone AS NouvTéléphone, " & _ "IIf([T_Nouvelles_valeurs.Telephone]<>[T_Anciennes_valeurs.Telephone],'diffTel','ok') AS diffTel, T_Anciennes_valeurs.Mobile, T_Nouvelles_valeurs.Mobile AS NouvMobile, " & _ "IIf([T_Nouvelles_valeurs.Mobile]<>[T_Anciennes_valeurs.Mobile],'diffMobile','ok') AS diffMobile, T_Anciennes_valeurs.EMail, T_Nouvelles_valeurs.EMail AS NouvEmail, " & _ "IIf([T_Nouvelles_valeurs.Email]<>[T_Anciennes_valeurs.Email],'diffEmail','ok') AS diffEmail, T_Nouvelles_valeurs.MasquerDonnees, T_Nouvelles_valeurs.Specialite, " & _ "T_Nouvelles_valeurs.DateAdhesion, T_Nouvelles_valeurs.Chemin " & _ "FROM (Requête2 INNER JOIN T_Anciennes_valeurs ON (Requête2.N°Adherent=T_Anciennes_valeurs.N°Adherent) AND (Requête2.MaxDeMiseAJour=T_Anciennes_valeurs.MiseAJour)) " & _ "INNER JOIN (Requête1 INNER JOIN T_Nouvelles_valeurs ON (Requête1.N°Adherent=T_Nouvelles_valeurs.N°Adherent) AND (Requête1.MaxDeMiseAJour=T_Nouvelles_valeurs.MiseAJour)) ON T_Anciennes_valeurs.N°Adherent=T_Nouvelles_valeurs.N°Adherent " & _ "WHERE (((T_Nouvelles_valeurs.MiseAJour) > # " & ConvertUSDate(DateInscription) & "#) And ((T_Nouvelles_valeurs.MasquerDonnees) = false) And ((T_Nouvelles_valeurs.Adherent) = True))" & _ "ORDER BY T_Nouvelles_valeurs.MiseAJour DESC; " Debug.Print strSql With Me .RecordSource = strSql .Étiquette28.Caption = "Modifications aux coordonnées adhérents depuis le " & Format(DateInscription, "dd/mm/yyyy") End With Fin: Exit Sub Err: MsgBox "Erreur ouverture " & Err.Number & " " & Err.Description Resume Fin End Sub
C15
Partager