Auteur de questions
Access et Date Anniversaire

Question
-
Bonjour,
Je rencontre le problème suivant : Je veux extraire de ma base access les concerts ayant eu lieu le jour X. (Principe de l'anniversaire). Je souhaite sortir un etat de ce resultat. (l'etat fonctionne tres bien en autonome. Quand je l'appelle depuis VB sans modifier la clause where) Je voulais preparer, par exemple, 5 etats en avance. J'ai donc ecrit ce code :
Dim DateJour As String Dim I As Integer = 1 Dim strDB As String = CheminBase & "JH.mdb" Dim RptNom As String For I = 1 To 5 DateJour = I If DateJour < 10 Then DateJour = "0" & DateJour Dim Mois As String = Month(Date.Today) If Mois < 10 Then Mois = "0" & Mois Dim Annee As String = Year(Date.Today) DateJour = DateJour & Mois & Annee ClauseWhere = "Format([con_date],ddmm) = Format(" & DateAdd(Interval:=DateInterval.Day, I, Date.Today) & ",ddmm) order by con_Date DESC " RptNom = "FICHE_JOUR_CONCERT_PLAN" OLEOpenReport_PLAN(strDB, RptNom, AcView.acViewPreview, , ClauseWhere) Next MsgBox("Planification terminée")
Voici le Code de la fonction OleOpenReport_PLAN
Private Function OLEOpenReport_PLAN(ByVal strDBName As String, ByVal strRptName As String, Optional ByVal intDisplay As Access.AcView = Access.AcView.acViewNormal, Optional ByVal strFilter As String = "", Optional ByVal strWhere As String = "") As Boolean Dim bReturn As Boolean = True Try Dim objAccess As New Access.Application objAccess.OpenCurrentDatabase(strDBName, False) objAccess.DoCmd.OpenReport(strRptName, intDisplay, strFilter, strWhere, Access.AcWindowMode.acWindowNormal) objAccess.DoCmd.OutputTo(Access.AcOutputObjectType.acOutputReport, strRptName, OutputFormat:="PDF", "C:\Users\" & Environment.UserName & "\AppData\Roaming\IP-Informatique Pourrieres\J H L Appli\Editions\Editions Planifiees\" & strRptName & "_" & DateJour & ".pdf",,,,) objAccess.Quit(Access.AcQuitOption.acQuitSaveNone) objAccess = Nothing Catch ex As Exception bReturn = False MessageBox.Show(ex.ToString, "Erreur Automation", MessageBoxButtons.OK, MessageBoxIcon.Information) End Try Return bReturn End Function
A l'execution je recoit une erreur "Operateur absent" au niveau de la clausewhere. J'ai essaye aussi :
ClauseWhere = "Format([con_date],ddmm) = Format(Date()+" & 1 & ",ddmm) order by con_Date DESC "
qui me donne la meme erreur.
Pour etre complet voici le code de la requete de l etat :
SELECT CONCERTS.CON_Date, VILLES.VIL_NOM
FROM VILLES INNER JOIN CONCERTS ON VILLES.IDVILLE = CONCERTS.IDVILLE;Je vous remercie par arvance de votre aide.
Thierry
Toutes les réponses
-
Bonjour,
La fonction DateAdd renvoie un type DateTime. Essayez les deux méthodes suivantes pour vérifier si le problème provient de la concaténation des chaînes avec la valeur de retour:- Essayez d'ajouter .ToString comme suit:
ClauseWhere = "Format([con_date],ddmm) = Format(" & DateAdd(Interval:=DateInterval.Day, I, Date.Today).ToString() & ",ddmm) order by con_Date DESC "
- Une autre façon sera de définir une variable, de mettre un point d'arrêt juste après et de vérifier quelle valeur est écrite dans la variable avant de la transmettre à DateAdd. Quelque chose comme ceci:
Dim interval = DateAdd(Interval:=DateInterval.Day, I, Date.Today).ToString() ClauseWhere = "Format([con_date],ddmm) = Format(" & interval & ",ddmm) order by con_Date DESC "
Cordialement,
Nina
Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.
- Modifié Nina ZaekovaMicrosoft contingent staff, Moderator mardi 11 janvier 2022 14:56
-
Bonjour,
Je vous remercie de votre réponse.
Je viens d'essayer vos deux pistes. Le résultat est toujours le même. Erreur : Opérateur absent dans l'expression.
Avec un point d'arrêt, voici, dans l'ordre des solutions que vous me proposez le contenu de ClauseWhere. Dans les deux cas cela semble correct mais génère quand même l'erreur.
'Format([con_date],ddmm) = Format(12/01/2022 00:00:00,ddmm) order by con_Date DESC
'Format([con_date],ddmm) = Format(12/01/2022 00:00:00,ddmm) order by con_Date DESC
-