Bonjour,

J'ai un petit soucis qui me chagrine car je ne comprends pas sa raison d'être.

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
Dim Rame As String
Dim Rame2 As String
Dim Rame3 As String
Dim Rame4 As String
 
SQL_Rame = "SELECT rentrée.Rame FROM rentrée GROUP BY rentrée.rame HAVING (rentrée.rame <> """" )"
Set rs_SQL_Rame = CurrentDb.OpenRecordset(SQL_Rame)
 
 
If Not rs_SQL_Rame.EOF Then
    rs_SQL_Rame.MoveLast
    Z = rs_SQL_Rame.RecordCount
 
    rs_SQL_Rame.MoveFirst
 
    Do While Not rs_SQL_Rame.EOF
 
        Rame = rs_SQL_Rame("Rame").Value
        Rame2 = Right(Rame, 1)
 
        If Rame2 = "A" Or Rame = "D" Then
 
            Rame3 = Replace(Rame, Rame2, "")
 
            SQL_Rame2 = "SELECT [Parc Z2N].Rame_Complète"
            SQL_Rame2 = SQL_Rame2 & " FROM [Parc Z2N]"
            SQL_Rame2 = SQL_Rame2 & " GROUP BY [Parc Z2N].Rame_Complète, [Parc Z2N].série, [Parc Z2N].rame"
            SQL_Rame2 = SQL_Rame2 & " HAVING ([Parc Z2N].rame = '" & Rame3 & "' AND [Parc Z2N].série = '" & Z20500 & "') "
            Set rs_SQL_Rame2 = CurrentDb.OpenRecordset(SQL_Rame2)
 
            If Not rs_SQL_Rame2.EOF Then
                rs_SQL_Rame2.MoveLast
                y = rs_SQL_Rame2.RecordCount
 
                rs_SQL_Rame2.MoveFirst
 
                Do While Not rs_SQL_Rame2.EOF
 
                Rame4 = rs_SQL_Rame2("Rame_Complète").Value
 
                DoCmd.RunSQL "UPDATE rentrée SET rentrée.Rame = '" & Rame4 & "' "
 
                rs_SQL_Rame2.MoveNext
                Loop
 
            Else
            End If
        Else
        End If
 
    rs_SQL_Rame.MoveNext
    Loop
 
Else
End If

Durant ce code, j'effectue la requête suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SQL_Rame2 = "SELECT [Parc Z2N].Rame_Complète"
            SQL_Rame2 = SQL_Rame2 & " FROM [Parc Z2N]"
            SQL_Rame2 = SQL_Rame2 & " GROUP BY [Parc Z2N].Rame_Complète, [Parc Z2N].série, [Parc Z2N].rame"
            SQL_Rame2 = SQL_Rame2 & " HAVING ([Parc Z2N].rame = '" & Rame3 & "' AND [Parc Z2N].série = '" & Z20500 & "') "
            Set rs_SQL_Rame2 = CurrentDb.OpenRecordset(SQL_Rame2)
Et puis je lance ma routine .... aucun soucis jusqu'à un cas concerné:

Rame = 01A
Rame2 = A
Rame3 = 01

et là, lors de l'execution de cette requête, aucun résultat ne m'est renvoyé, alors qu'il devrait y en avoir un !

Alors ensuite, je décide de passer par le constructeur de requête, et là il me renvoie bien ce fameux résultat.

Pourquoi cette incohérence ?

J'avais pensé à un problème de type de variable (notamment Rame3 et [Parc Z2N].Rame, mais les deux sont bien en texte).

Alors une petite idée ?

Merci d'avance ?

EDIT: J'ai trouvé .... c'est le Z20500 qui est mal syntaxé, faute bête et méchante de la part d'un type qui n'a pas l'habitude de regarder là où il faut ...

Il fallait que j'écrive ""Z20500"" et non pas '" & Z20500 & "'