Format date dans recordset

Résolu/Fermé
andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008 - 28 juin 2008 à 16:17
andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008 - 1 juil. 2008 à 07:33
Bonjour,

je voudrais savoir le format de la date à mettre dans un intervalle de date dans un recordset, les intervalles étant critere1 et critere2 (qui sont dans dans des txtbox), pour le moment j'ai mis
HAVING (T_MouvStock.DateSt) Between #critere1# And #critere2#"

et ça ne marche pas, ça ne marche que lorsqu'on tape directement des dates dans ces intervalles,

avez-vous une idée,
Andy
A voir également:

3 réponses

yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 Ambassadeur 1 555
28 juin 2008 à 21:53
Tu peux clarifier, peut-etre avec un exemple ?
0
andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008 1
30 juin 2008 à 06:50
SAlut,

voilà un bout de mon code,
Nota: les champs des tables ont été extraites d'une autre base SAGE par ODBC

Private Sub MouvementStock_Click()
Dim rst As DAO.Recordset
Dim rst_mouvstock As DAO.Recordset
Dim critere1 As String
Dim critere2 As String
critere1 = Me.DateDébut ' date dans une zone de liste
critere2 = Me.DateFin ' date dans une zone de liste
CurrentDb.Execute "delete from temp_MouvStock" ' purger table du recordset
CurrentDb.Execute "INSERT INTO Temp_MouvStock ( N°Pièce, [Date], RéférenceArticle, Désignation, CodeFamille, Quantité, Unité, PrixUnitaire, Montant, Dépôt )SELECT F_DOCLIGNE.DO_PIECE, F_DOCLIGNE.DO_DATE, F_ARTICLE.AR_REF, F_ARTICLE.AR_DESIGN, F_ARTICLE.FA_CODEFAMILLE, F_DOCLIGNE.DL_QTE, F_ARTICLE.INT_UNITEVEN, F_ARTICLE.AR_PRIXACH, [AR_PRIXACH]*[AS_QTESTO] AS Montant, F_DEPOT.DE_INTITULE FROM F_DEPOT INNER JOIN (F_DOCENTETE INNER JOIN ((F_ARTICLE INNER JOIN F_ARTSTOCK ON F_ARTICLE.AR_REF = F_ARTSTOCK.AR_REF) INNER JOIN F_DOCLIGNE ON F_ARTICLE.AR_REF = F_DOCLIGNE.AR_REF) ON F_DOCENTETE.DO_PIECE = F_DOCLIGNE.DO_PIECE) ON F_DEPOT.DE_NO = F_ARTSTOCK.DE_NO GROUP BY F_DOCLIGNE.DO_PIECE, F_DOCLIGNE.DO_DATE, F_ARTICLE.AR_REF, F_ARTICLE.AR_DESIGN, F_ARTICLE.FA_CODEFAMILLE, F_DOCLIGNE.DL_QTE, F_ARTICLE.INT_UNITEVEN, F_ARTICLE.AR_PRIXACH, [AR_PRIXACH]*[AS_QTESTO], F_DEPOT.DE_INTITULE HAVING (F_DOCLIGNE.DO_DATE) Between #06/01/2008# And #06/05/2008#"
end sub

et là çà marche, par contre lorsque je mets critere1 et critere2 à la place des dates, j'ai l'erreur '3075'= erreur de syntaxe dans la date dans l'expression HAVING (F_DOCLIGNE.DO_DATE) Between #critere1# And #critere2#", ce n'est peut-être qu'un problème de guillement et de parenthèse, j'ai déjà essayé plusieurs combinaison,
0
yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 Ambassadeur 1 555
30 juin 2008 à 08:05
Moi j'essayerais avec une clause "WHERE" à la place de "HAVING", mais cela n'a rien à voir avec ton probleme.
Si tes texbox contiennent des dates, que DO_DATE est un champ de type "date/time", et que la partie "heure" ne doive pas intervenir dans ta selection, je suggére de les déclarer comme dates, et de les utiliser ainsi :
Dim critere1 As date
Dim critere2 As date
...HAVING (F_DOCLIGNE.DO_DATE) Between " +cstr(clng(int(critere1))) + " And " +cstr(clng(int(critere2)))
0
andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008 1
30 juin 2008 à 10:00
merci pour ta proposotion,
j'ai collé ce que tu m'as proposé et maintenant j'ai l'erreur : 3146: ODBC--l'appel a échoué, il y a quelque chose à changer?

d'autre part, il vaut mieux garder le HAVING au lieu de le changer en WHERE sinon il y a l'erreur 3075: erreur de syntaxe (opérateur absent) dans l'expression "F_DEPOT.DE_INTITULE" etc,

à bientôt
0
yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 555 > andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008
30 juin 2008 à 10:07
Et si tu mets le "WHERE" avant le "GROUP BY" ?

CurrentDb.Execute "INSERT INTO Temp_MouvStock ( N°Pièce, [Date], RéférenceArticle, Désignation, CodeFamille, Quantité, Unité, PrixUnitaire, Montant, Dépôt )SELECT F_DOCLIGNE.DO_PIECE, F_DOCLIGNE.DO_DATE, F_ARTICLE.AR_REF, F_ARTICLE.AR_DESIGN, F_ARTICLE.FA_CODEFAMILLE, F_DOCLIGNE.DL_QTE, F_ARTICLE.INT_UNITEVEN, F_ARTICLE.AR_PRIXACH, [AR_PRIXACH]*[AS_QTESTO] AS Montant, F_DEPOT.DE_INTITULE FROM F_DEPOT INNER JOIN (F_DOCENTETE INNER JOIN ((F_ARTICLE INNER JOIN F_ARTSTOCK ON F_ARTICLE.AR_REF = F_ARTSTOCK.AR_REF) INNER JOIN F_DOCLIGNE ON F_ARTICLE.AR_REF = F_DOCLIGNE.AR_REF) ON F_DOCENTETE.DO_PIECE = F_DOCLIGNE.DO_PIECE) ON F_DEPOT.DE_NO = F_ARTSTOCK.DE_NO
WHERE (F_DOCLIGNE.DO_DATE) Between #06/01/2008# And #06/05/2008#
GROUP BY F_DOCLIGNE.DO_PIECE, F_DOCLIGNE.DO_DATE, F_ARTICLE.AR_REF, F_ARTICLE.AR_DESIGN, F_ARTICLE.FA_CODEFAMILLE, F_DOCLIGNE.DL_QTE, F_ARTICLE.INT_UNITEVEN, F_ARTICLE.AR_PRIXACH, [AR_PRIXACH]*[AS_QTESTO], F_DEPOT.DE_INTITULE "
0
andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008 1 > yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024
1 juil. 2008 à 06:24
en mettant le where avant le group by, j'ai maintenant "Erreur de compilation: Attendu:Fin d'instruction, et c'est le mot GROUP qui est surligné,
0
andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008 1 > andylenny Messages postés 13 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 8 décembre 2008
1 juil. 2008 à 07:33
Salut à Tous,

un copain m'a donné la solution, et ce n'était qu'un problème de quillemets et de & et me. je vous donne la correction:


CurrentDb.Execute "INSERT INTO Temp_MouvementStock ( N°Pièce, [Date], RéférenceArticle, Désignation, CodeFamille, Quantité, Unité, PrixUnitaire, Montant, Dépôt )SELECT F_DOCLIGNE.DO_PIECE, F_DOCLIGNE.DO_DATE, F_ARTICLE.AR_REF, F_ARTICLE.AR_DESIGN, F_ARTICLE.FA_CODEFAMILLE, F_DOCLIGNE.DL_QTE, F_ARTICLE.INT_UNITEVEN, F_ARTICLE.AR_PRIXACH, [AR_PRIXACH]*[AS_QTESTO] AS Montant, F_DEPOT.DE_INTITULE FROM F_DEPOT INNER JOIN (F_DOCENTETE INNER JOIN ((F_ARTICLE INNER JOIN F_ARTSTOCK ON F_ARTICLE.AR_REF = F_ARTSTOCK.AR_REF) INNER JOIN F_DOCLIGNE ON F_ARTICLE.AR_REF = F_DOCLIGNE.AR_REF) ON F_DOCENTETE.DO_PIECE = F_DOCLIGNE.DO_PIECE) ON F_DEPOT.DE_NO = F_ARTSTOCK.DE_NO GROUP BY F_DOCLIGNE.DO_PIECE, F_DOCLIGNE.DO_DATE, F_ARTICLE.AR_REF, F_ARTICLE.AR_DESIGN, F_ARTICLE.FA_CODEFAMILLE, F_DOCLIGNE.DL_QTE, F_ARTICLE.INT_UNITEVEN, F_ARTICLE.AR_PRIXACH, [AR_PRIXACH]*[AS_QTESTO], F_DEPOT.DE_INTITULE having F_DOCLIGNE.DO_DATE " & " between " & FormatDate(Me.critere1) & " and " & FormatDate(Me.critere2)

où formatDate est une function:

Function FormatDate(d As Date)
FormatDate = "#" & Format(d, "mm/dd/yyyy") & "#"
End Function


a +
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
30 juin 2008 à 08:40
Bonjour,
Je connais pas le language employé mais peut-être une piste...
Les dates dans une BD sont au format US ? et si: par ex :
date1 le 13/12/2008 (13 décembre) dans la base c'est 12/13/2008 d'où erreur (pas de mois 13)
peut-être avec un Format...
A+
0