J'espère que vous pourrez m'aider.
Dans un formulaire, lorsque je clique sur Recherche, je lance mon code VBA et je souhaite inscrire le résultat d'une requête select dans un champs du même formulaire.
Sauf qu'il me marque qu'il y a une erreur d’exécution 3075 au niveau de la syntaxe et je ne trouve pas où (novice avec DAO). Une idée, s'il vous plait ?
Private Sub Cmd_RechMoyenneAge_Click()
Dim ASMAT As DAO.Database
Dim Moyenne As DAO.Recordset
Dim Sql As String
DoCmd.SetWarnings False
' Base de données et requète
Set ASMAT = CurrentDb
Sql = "SELECT AVG(DATEDIFF(NOW(),T_Stagiaire.Date_Naissance_Stagiaire)) FROM T_Stagiaire WHERE (T_Stagiaire.[Stage_Base]='" & Me.Txt_Stage & "' " & _
" OR T_Stagiaire.[Stage_PSC]='" & Me.Txt_Stage & "' " & _
" OR T_Stagiaire.[Stage_Appro]='" & Me.Txt_Stage & "' " & _
" OR T_Stagiaire.[Stage_Revision]='" & Me.Txt_Stage & "' " & _
" OR T_Stagiaire.[Numero_Inscription]='" & Me.Txt_Stage
' Ouverture du Recordset et inscription de la moyenne d'âge dans le formulaire
Set Moyenne = ASMAT.OpenRecordset(Sql, dbOpenDynaset, dbReadOnly)
Me.Txt_Moyenne = Moyenne
' Fermeture du Recordset
Moyenne.Close
ASMAT.Close
DoCmd.SetWarnings True
End Sub
Mon problème, c'est que je n'ai que la date de naissance des stagiaires, mais qu'il me faut la moyenne d'âge des stagiaires par stage. Un vrai casse-tête.
Je vais peut-être faire un autre post pour ça. Merci d'avoir trouvé ma première erreur.
En plus de la remarque d'HDU, ton erreur de syntaxe vient des guillemets, tu utilises les mêmes autour de yyyy et autour de toute la requête. Il faut les échapper ou, s'ils sont acceptés, utiliser des guillemets simples.
bonjour, si certains champs de la table sont de format numérique, tu ne peux pas les comparer à des chaines de caractères.
par exemple, si le dernier champ est numérique, tu pourrais faire ainsi:
Sql = "SELECT AVG(DATEDIFF(NOW(),T_Stagiaire.Date_Naissance_Stagiaire)) FROM T_Stagiaire WHERE T_Stagiaire.[Stage_Base]='" & Me.Txt_Stage & "' " & _
" OR T_Stagiaire.[Stage_PSC]='" & Me.Txt_Stage & "' " & _
" OR T_Stagiaire.[Stage_Appro]='" & Me.Txt_Stage & "' " & _
" OR T_Stagiaire.[Stage_Revision]='" & Me.Txt_Stage & "' " & _
" OR str(T_Stagiaire.[Numero_Inscription])=' " & Me.Txt_Stage & "' "
sql>sql = "SELECT DATEDIFF("yyyy",avg(YEAR(T_Stagiaire.Date_Naissance_Stagiaire)),NOW()) FROM
:-)
En plus de la remarque d'HDU, ton erreur de syntaxe vient des guillemets, tu utilises les mêmes autour de yyyy et autour de toute la requête. Il faut les échapper ou, s'ils sont acceptés, utiliser des guillemets simples.
Xavier
Un grand merci (un peu en retard) à vous pour votre aide. En plus des erreurs que vous avez trouvé, j'avais oublié une parenthèse. Oups.