Bonjour, mon problème ici est une requête suppression qui bute sur un message du type "Erreur: spécifiez la table des enregistrements à supprimer"
Voici mon code:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 SQL_Def = "SELECT Test_Alerte_Z2N_2.[Date Défaut]" SQL_Def = SQL_Def & " FROM Test_Alerte_Z2N_2" SQL_Def = SQL_Def & " GROUP BY Test_Alerte_Z2N_2.[Date Défaut]" SQL_Def = SQL_Def & " ORDER BY Test_Alerte_Z2N_2.[Date Défaut] DESC" Set rs_SQL_Def = CurrentDb.OpenRecordset(SQL_Def) If Not rs_SQL_Def.EOF Then rs_SQL_Def.MoveLast Z = rs_SQL_Def.RecordCount rs_SQL_Def.MoveFirst Do While Not rs_SQL_Def.EOF Date_ = rs_SQL_Def("Date Défaut").Value SQL_Def2 = "SELECT Test_alerte_Z2N_2.[Code Défaut], Test_alerte_Z2N_2.[Première heure défaut]" SQL_Def2 = SQL_Def2 & " FROM Test_Alerte_Z2N_2" SQL_Def2 = SQL_Def2 & " WHERE ((Test_alerte_Z2N_2.[Code Défaut] = '" & "AC-109" & "') OR (Test_alerte_Z2N_2.[Code Défaut] = '" & "AC-102" & "')) AND Test_Alerte_Z2N_2.[Date Défaut] = #" & Date_ & "# " SQL_Def2 = SQL_Def2 & " GROUP BY Test_alerte_Z2N_2.[Code Défaut], Test_alerte_Z2N_2.[Première heure défaut], Test_Alerte_Z2N_2.[Date Défaut]" SQL_Def2 = SQL_Def2 & " ORDER BY Test_alerte_Z2N_2.[Première heure défaut] DESC;" Set rs_SQL_Def2 = CurrentDb.OpenRecordset(SQL_Def2) If Not rs_SQL_Def2.EOF Then rs_SQL_Def2.MoveLast y = rs_SQL_Def2.RecordCount If y >= 2 Then rs_SQL_Def2.MoveFirst Do While Not rs_SQL_Def2.EOF Code1 = rs_SQL_Def2("Code Défaut").Value Heure1 = rs_SQL_Def2("Première heure Défaut").Value DoCmd.RunSQL "INSERT INTO Test_Alerte_Z2N_2_Temp ([Code défaut],[Première Heure Défaut]) Values ('" & rs_SQL_Def2("Code Défaut").Value & "',#" & rs_SQL_Def2("Première heure Défaut").Value & "#)" rs_SQL_Def2.MoveNext Code2 = rs_SQL_Def2("Code Défaut").Value Heure2 = rs_SQL_Def2("Première heure Défaut").Value DoCmd.RunSQL "INSERT INTO Test_Alerte_Z2N_2_Temp ([Code défaut],[Première Heure Défaut]) Values ('" & rs_SQL_Def2("Code Défaut").Value & "',#" & rs_SQL_Def2("Première heure Défaut").Value & "#)" If Code1 <> Code2 Then HeureDiff = DateDiff("s", Heure1, Heure2) If HeureDiff < 5 Then 'Durée à déterminer en secondes DoCmd.RunSQL "DELETE FROM Test_Alerte_Z2N_2 INNER JOIN Test_Alerte_Z2N_2_Temp ON Test_Alerte_Z2N_2.[Code Défaut] = Test_Alerte_Z2N_2_Temp.[Code Défaut] WHERE ((Test_Alerte_Z2N_2_Temp.[Code Défaut] = Test_Alerte_Z2N_2.[Code Défaut]) AND (Test_Alerte_Z2N_2_Temp.[Première heure Défaut] = Test_Alerte_Z2N_2.[Première heure Défaut]))" Else: DoCmd.RunSQL "DELETE FROM Test_Alerte_Z2N_2 INNER JOIN Test_Alerte_Z2N_2_Temp ON Test_Alerte_Z2N_2.[Code Défaut] = Test_Alerte_Z2N_2_Temp.[Code Défaut] WHERE ((Test_Alerte_Z2N_2_Temp.[Code Défaut] = Test_Alerte_Z2N_2.[Code Défaut]) AND (Test_Alerte_Z2N_2_Temp.[Code Défaut] = '" & AC - 102 & "') AND (Test_Alerte_Z2N_2_Temp.[Première heure Défaut] = Test_Alerte_Z2N_2.[Première heure Défaut]))" End If ElseIf Code1 = "AC-102" And Code2 = "AC-102" Then DoCmd.RunSQL "DELETE FROM Test_Alerte_Z2N_2 INNER JOIN Test_Alerte_Z2N_2_Temp ON Test_Alerte_Z2N_2.[Code Défaut] = Test_Alerte_Z2N_2_Temp.[Code Défaut] WHERE ((Test_Alerte_Z2N_2_Temp.[Code Défaut] = Test_Alerte_Z2N_2.[Code Défaut]) AND (Test_Alerte_Z2N_2_Temp.[Première heure Défaut] = Test_Alerte_Z2N_2.[Première heure Défaut]))" Else End If DoCmd.RunSQL "DELETE * FROM Test_Alerte_Z2N_2_Temp" rs_SQL_Def2.MoveNext Loop Else End If Else End If rs_SQL_Def.MoveNext Loop Else End If
Et la requête suppression qui pose soucis (et je pense que toute poseront le même soucis vu qu'elles sont écrites de la même manière):
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.RunSQL "DELETE FROM Test_Alerte_Z2N_2 INNER JOIN Test_Alerte_Z2N_2_Temp ON Test_Alerte_Z2N_2.[Code Défaut] = Test_Alerte_Z2N_2_Temp.[Code Défaut] WHERE ((Test_Alerte_Z2N_2_Temp.[Code Défaut] = Test_Alerte_Z2N_2.[Code Défaut]) AND (Test_Alerte_Z2N_2_Temp.[Première heure Défaut] = Test_Alerte_Z2N_2.[Première heure Défaut]))"
En fouinant un peu, je tombe là dessus:
https://support.microsoft.com/fr-fr/kb/467066
Le problème c'est que derrière, j'ai des critères particuliers quoi, comme vous avez pu le voir, et ce lien, me dit de passer par le "*" de ma table .... seulement derrière, on peut pas appliquer de critères .... Alors, comment dois je m'y prendre pour supprimer les critères de la Table A en fonction de critères liés entre la Table A et la Table B ?
Merci d'avance !
Partager