Bonjour à tous.

Pour info j'utilise acces 2003, mais je ne pense pas que ceci interfère.

Etant assez nul en SQL, je crée une requète et j'utilise en principe le code SQL dans le corps de mon programme. J'ai dans une table (2016TELE) les champs suivants, parmi d'autres : an, mois et jour et je souhaite connaître la dernière date enregistrée.

Pour ceci j'ai crée une requête en utilisant la fonction cdate pour extraire dans un seul champ (appelé date) le dernier jour enregistré.

Cette requète fonctionne parfaitement bien dans l'UI. En voici la syntaxe :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT Last(CDate([an] & "/" & [mois] & "/" & [jour])) AS [Date] FROM 2016TELE;

J'intègre ce code dans mon programme comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Dim db As Database
    Dim qdefDernierJour As QueryDef
    Dim rs1 As Recordset
    Set db = CurrentDb
    Set qdefDernierJour = db.CreateQueryDef("")
    With qdefDernierJour
        .SQL = "SELECT Last(CDate([an]& " / " & [mois] & " / " & [jour])) AS [Date]FROM 2016TELE"
 
        Set rs1 = .OpenRecordset
        rs1.MoveFirst
 
    End With
Et là, j'ai le message suivant : erreur d'éxécution 13, incompatibilité de type.

Un test avec : .SQL = "SELECT * FROM 2016TELE" passe sans problème. Il me semble donc qu'il peut s'agir d'un problème d'interprétation avec la fonction Cdate() dans la partie .SQL.

Sauriez vous comment écrire correctement ce query ?

Par avance, merci.