Erreur 3075 en VBA - Requête sql avec un SELECT
Résolu
Noriam
Messages postés
21
Statut
Membre
-
Noriam Messages postés 21 Statut Membre -
Noriam Messages postés 21 Statut Membre -
Bonjour,
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 ?
Si vous avez une solution, merci d'avance.
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
Si vous avez une solution, merci d'avance.
2 réponses
-
Bonjour,
À première vue, dans ton WHERE, tu ouvres une parenthèse et ne la refermes jamais.
Tu ne fermes pas non plus les guillemets sur le dernier champ.
Xavier-
-
-
-
-
Bonsoir,
J'ai fait ça :Sql = "SELECT DATEDIFF("yyyy",avg(YEAR(T_Stagiaire.Date_Naissance_Stagiaire)),NOW()) 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 & "')"
Il y a une erreur de syntaxe avec "yyyy" mais je vois pas.
En tout cas, un grand merci pour m'avoir déjà aidée.
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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 & "' "