IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Requête-Mouvements entre deux dates [AC-365]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut Requête-Mouvements entre deux dates
    Hello la comunauté

    Je voudrais savoir tous les mouvements que j'ai entre deux dates dans mon form "F_Resultats"

    Requête "R_Resultats"
    Nom : Capture.PNG
Affichages : 191
Taille : 109,5 Ko

    Requête "R_ResultatsFiltre"
    Nom : Capture.PNG
Affichages : 184
Taille : 100,9 Ko

    Pour les différantes recherches j'ai ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Private Sub FilterForm()
        Dim strWhere As String, s As String, DateStart, DateEnd, SQL As String
     
        strWhere = ""
     
        'Filtre suivant date du jour
        If Not IsNull(Me.cboSearchDate_Jour) And Me.cboSearchDate_Jour <> "" Then
            strWhere = "AND [Date_mouvement] = " & Format(Me.cboSearchDate_Jour, FormatDate) & ""
        End If
     
        'Filtre suivant l'année
        If Not IsNull(Me.cboSearchAnnee) And Me.cboSearchAnnee <> "" Then
            strWhere = "AND [Annee_mouvement] = " & Me.cboSearchAnnee & ""
        End If
     
        'Filtre suivant le Mois
        If Not IsNull(Me.cboSearchMois) And Me.cboSearchMois <> "" Then
            strWhere = "AND [Mois_mouvement] = " & Me.cboSearchMois & ""
        End If
     
        'Filtre suivant la semaine
        If Not IsNull(Me.cboSearchSemaine) And Me.cboSearchSemaine <> "" Then
            strWhere = "AND [Semaine_mouvement] = " & Me.cboSearchSemaine & ""
        End If
     
        'Filtre suivant N° Imputations
        If Not IsNull(Me.Cbo_SearchImputations) And Me.Cbo_SearchImputations <> "" Then
            strWhere = strWhere & " AND [ID_Imputations] = " & Me.Cbo_SearchImputations & ""
        End If
     
        '--- Filtre suivant demandeur
        If Not IsNull(Me.Cbo_SearchDemandeurs) And Me.Cbo_SearchDemandeurs <> "" Then
            strWhere = strWhere & " AND [NomPrn] = '" & Me.Cbo_SearchDemandeurs & "'"
        End If
     
        '--- Filtre suivant Référence Produit
        If Not IsNull(Me.Cbo_SearchReferenceProduits) And Me.Cbo_SearchReferenceProduits <> "" Then
            strWhere = strWhere & " AND [Reference_Produit] = '" & Me.Cbo_SearchReferenceProduits & "'"
        End If
     
        '--- Filtre suivant l'état
        If Not IsNull(Me.CboSearchEtat) And Me.CboSearchEtat <> "" Then
            strWhere = strWhere & " AND [Etat] = '" & Me.CboSearchEtat.Column(1) & "'"
        End If
     
        '---Filtre suivant periode
        DateStart = DateUS(Me.TxtB_DebutPeriode.Value)
        DateEnd = DateUS(Me.TxtB_FinPeriode.Value)
        SQL = "SELECT Id_Numero, [Date création], ..... "
        SQL = SQL & "WHERE (T_Mouvements.[Date_Mouvement] BETWEEN " & DateStart & " AND " & DateEnd & ");"
     
        'Debug.Print "strWhere: "; strWhere
        If strWhere = "" Then
            Me.Filter = ""
            Me.FilterOn = False
            CurrentDb.QueryDefs("R_ResultatsFiltre").SQL = sSQL
        Else
            strWhere = Mid(strWhere, 5)
            Me.Filter = strWhere
            Me.FilterOn = True
            '--- les champs calculés sont à remplacer par leurs formules de calcul
            s = sSQL & " WHERE " & strWhere & ";"
            s = Replace(s, "[Mois_Mouvement]", "Month([Date_Mouvement])")
            s = Replace(s, "[Annee_Mouvement]", "Year([Date_Mouvement])")
            s = Replace(s, "[Semaine_Mouvement]", "ISOWeek([Date_Mouvement])")
            CurrentDb.QueryDefs("R_ResultatsFiltre").SQL = s
        End If
    End Sub
    La requête utilisait pour cela est dans ce code (Pris dans le forum)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        '---Filtre suivant periode
        DateStart = DateUS(Me.TxtB_DebutPeriode.Value)
        DateEnd = DateUS(Me.TxtB_FinPeriode.Value)
        SQL = "SELECT Id_Numero, [Date création], ..... "
        SQL = SQL & "WHERE (T_Mouvements.[Date_Mouvement] BETWEEN " & DateStart & " AND " & DateEnd & ");"
    Le code pour convertir la date US

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Compare Database
     
    Public Function DateUS(ByVal DateFR As Variant)
        If IsNull(DateFR) Then Exit Function
        DateUS = "#" & Month(DateFR) & "/" & Day(DateFR) & "/" & Year(DateFR) & "#"
    End Function
    Pour lancer la procédure j'ai mis dans les textbox (Apres MAJ)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub TxtB_DebutPeriode_AfterUpdate()
    FilterForm
    End Sub
     
    Private Sub TxtB_FinPeriode_AfterUpdate()
    FilterForm
    End Sub
    Je me doutais que cela ne serai pas si facile, lol.

    1) Le tri ne se fait pas
    2) J'ai une erreur lors du Reset

    Code du lancement de la procédure de Reset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub btnReset_Click()
        Call ToutVider(Me)
        Me.LbL_Temps.Caption = "Résultats : "
        Call FilterForm
    End Sub
    Code de la procédure de reset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Option Compare Database
     
    'On vide les ComboBox du form Résultats
    Public Function ToutVider(frm As Form)
        Dim ctrl As Control
        For Each ctrl In frm.Controls
            If ctrl.Tag = "reset" Then
               Select Case ctrl.ControlType
                  Case acTextBox
                       ctrl = ""
                  Case acOptionGroup, acComboBox, acListBox
                      ctrl = Null
                  Case acCheckBox
                     ctrl = False
               End Select
            End If
        Next
    End Function
    L'endroit de l'erreur
    Nom : Capture.PNG
Affichages : 192
Taille : 10,4 Ko

    Si vous avez une idée

    Par avance merci.

    Lighteux26

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Quelle est le message d'erreur que tu obtiens ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    CC marot_r, le fofo

    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Quelle est le message d'erreur que tu obtiens ?

    A+
    Merci pour la réponse.

    Désolé du retard de ma réponse.

    Je refais tout cela car j'ai écrasé le mauvais fichier.

    Je reviens.

    Merci.

  4. #4
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    CC

    marot_r

    Le message d'erreur :

    Erreur d'éxecution '13':
    Incompatibilité de type

    Je pense que c'est dûe au fait que les texbox soient vident.

    Merci, Lighteux26

  5. #5
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Encore des query dans des query ! Décidément !
    Vu le montage de votre 1er code Post#1, on devine que le résultat du filtre de votre frm doit servir à construire une query.
    J'ai du mal à comprendre les L47 à L50 et L53 à L67.
    En utilisant la mythique bdd Comptoirs de Mso et adapté aux éléments fournis dans le 1er code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub FilterForm()
    Dim dbs As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim strSql As String, strWhere As String
     
    Set dbs = CurrentDb()
     
    If Not IsNull(Me.cboDate) Then
        strWhere = "AND [date_fact] = #" & Me.cboDate & "#"
    End If
    If Not IsNull(Me.cboAnnee) Then
        strWhere = strWhere & " AND [anneefact] = " & Me.cboAnnee & ""
    End If
    If Not IsNull(Me.cboMois) Then
        strWhere = strWhere & " AND [moisfact] = " & Me.cboMois & ""
    End If
    If Not IsNull(Me.cboSemaine) Then
        strWhere = strWhere & " AND [semfact] = " & Me.cboSemaine & ""
    End If
    If Not IsNull(Me.txtDatedeb) And Not IsNull(Me.txtDatefin) And IsDate(Me.txtDatedeb) And IsDate(Me.txtDatefin) _
        And Me.txtDatefin > Me.txtDatedeb Then
        strWhere = strWhere & " AND [date_fact] BETWEEN " & Format(Me.txtDatedeb, "\#dd\/mm\/yyyy\#") & "" _
                            & " AND " & Format(Me.txtDatefin, "\#dd\/mm\/yyyy\#")
    End If
     
    If strWhere = "" Then
        Me!frm3_facture.Form.FilterOn = False
    Else
        strWhere = Mid(strWhere, 5)
        Me!frm3_facture.Form.Filter = strWhere
        Me!frm3_facture.Form.FilterOn = True
     
        strSql = "SELECT * FROM qry_frm" _
            & " WHERE " & strWhere & ""
     
        For Each qdf In dbs.QueryDefs
            If qdf.Name = "qry_frm_tmp" Then
                dbs.QueryDefs.Delete "qry_frm_tmp"
                dbs.QueryDefs.Refresh
                Exit For
            End If
        Next qdf
        Set qdf = dbs.CreateQueryDef("qry_frm_tmp", strSql)
        DoCmd.OpenQuery qdf.Name
        'dbs.QueryDefs("qry_frm_tmp").SQL = strSql
        'DoCmd.OpenQuery "qry_frm_tmp"    
    End If
    End Sub
    Les cbo de mon frm sont alimentées à partir du champ date_fact avec les fct Year(), Month() et Monthname(), IsoWeekNumber()
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  6. #6
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    hyperion13, le fofo

    Citation Envoyé par hyperion13 Voir le message
    Salut
    Encore des query dans des query ! Décidément !
    Toutes mes excuses, lol.

    Dans un premier temps.

    Voici corrigé.

    Requête "R_Resultats"

    Nom : R_Resultats.JPG
Affichages : 163
Taille : 53,3 Ko

    Requête "R_ResultatsFiltre"

    Nom : R_ResultatsFiltre.JPG
Affichages : 161
Taille : 54,2 Ko

    Citation Envoyé par hyperion13 Voir le message
    Salut
    J'ai du mal à comprendre les L47 à L50 et L53 à L67.
    Ligne 47.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'On affiche le formulaire a la taille de l'écran
    DoCmd.Maximize
    C'est pour afficher le formulaire a la taille de l'écran, mais a mon avis on peut le mettre directement dans les propriétés de la forme, je regarde

    Ligne 49.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.LbL_Temps.Caption = "Résultats : "
    Ça c'est supprimé depuis, cela ne sert plus.

    Ligne 51 à 54

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ssql = CurrentDb.QueryDefs("R_Resultats").SQL
        ssql = Left(ssql, InStr(ssql, ";") - 1)
        CurrentDb.QueryDefs("R_ResultatsFiltre").SQL = ssql
    c'est un code qui était déjà présent dans le premier fichier que j'ai fait, ou l'on m'a bien aidé.

    Les variables sont ensuite utilisées pour la recherche dans la procédure "FilterForm"

    Lignes 54 à 57
    Supprimées aussi, c'était pour Nommer les labels en faisant un saut a la ligne, mais j'ai modifié en le faisant avec CTRL+Entrée, je ne savais pas le processus.

    Votre code modifié suivant mes controls et champs, et j'ai une erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub FilterForm()
    Dim dbs As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim strSql As String, strWhere As String
     
    Set dbs = CurrentDb()
     
        If Not IsNull(Me.cboSearchDate_Jour) Then
            strWhere = "AND [Date_mouvement] = #" & Me.cboSearchDate_Jour & "#"
        End If
        If Not IsNull(Me.cboSearchAnnee) Then
            strWhere = strWhere & " AND [Annee_mouvement] = " & Me.cboSearchAnnee & ""
        End If
        If Not IsNull(Me.cboSearchMois) Then
            strWhere = strWhere & " AND [Mois_mouvement] = " & Me.cboSearchMois & ""
        End If
        If Not IsNull(Me.cboSearchSemaine) Then
            strWhere = strWhere & " AND [Semaine_mouvement] = " & Me.cboSearchSemaine & ""
        End If
        If Not IsNull(TxtB_DebutPeriode) And Not IsNull(TxtB_FinPeriode) And IsDate(TxtB_DebutPeriode) And IsDate(TxtB_FinPeriode) _
            And TxtB_FinPeriode > TxtB_DebutPeriode Then
            strWhere = strWhere & " AND [Date_mouvement] BETWEEN " & Format(TxtB_DebutPeriode, "\#dd\/mm\/yyyy\#") & "" _
                                & " AND " & Format(TxtB_FinPeriode, "\#dd\/mm\/yyyy\#")
        End If
     
        If strWhere = "" Then
            Me!F_Resultats.Form.FilterOn = False
        Else
            strWhere = Mid(strWhere, 5)
            Me!F_Resultats.Form.Filter = strWhere
            Me!F_Resultats.Form.FilterOn = True
     
            strSql = "SELECT * FROM qry_frm" _
                & " WHERE " & strWhere & ""
     
            For Each qdf In dbs.QueryDefs
                If qdf.Name = "qry_frm_tmp" Then
                    dbs.QueryDefs.Delete "qry_frm_tmp"
                    dbs.QueryDefs.Refresh
                    Exit For
                End If
            Next qdf
            Set qdf = dbs.CreateQueryDef("qry_frm_tmp", strSql)
            DoCmd.OpenQuery qdf.Name
            'dbs.QueryDefs("qry_frm_tmp").SQL = strSql
            'DoCmd.OpenQuery "qry_frm_tmp"
        End If
    End Sub
    Le message d'erreur :
    Nom : Capture.JPG
Affichages : 156
Taille : 20,0 Ko

    Ou pointe l'erreur
    Nom : Capture.JPG
Affichages : 169
Taille : 121,7 Ko

    Question?

    A quoi correspondent : "qry_frm" et "qry_frm_tmp"

    Car quand je fais une recherche par tout ce qui est des dates, mois, annee, etc..

    J'ai un message d'erreur
    Nom : Capture.JPG
Affichages : 157
Taille : 16,1 Ko

    et quand je survole sur la variable Name, il apparait
    Nom : Capture.JPG
Affichages : 154
Taille : 27,3 Ko

    Mais le trie se fait quand même.

    PS : J'en ai profité pour vérifier toutes mes requêtes, normalement a plus de query dans query,

    Merci, beaucoup.

    Lighteux26

  7. #7
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Chez moi Post#5
    frm3 = frm principal.
    frm3_facture = subfrm.
    Forms!frm3.frm3_facture.Form = Me!frm3_facture.Form.
    d'où en L27 Me!frm3_facture.Form.FilterOn = False.
    qry_frm,serait l'équivalent de R_ResultatsFiltre. Enfin c'est ce que j'ai cru comprendre en décodant votre sub() Post#1
    qry_frm_tmp, affiche le résultat de FilterForm(),appliqué au subfrm. C'est une copie de qry_frm.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  8. #8
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    CC hyperion13, le fofo

    Citation Envoyé par hyperion13 Voir le message
    Chez moi Post#5
    frm3 = frm principal.
    frm3_facture = subfrm.
    Forms!frm3.frm3_facture.Form = Me!frm3_facture.Form.
    d'où en L27 Me!frm3_facture.Form.FilterOn = False.
    qry_frm,serait l'équivalent de R_ResultatsFiltre. Enfin c'est ce que j'ai cru comprendre en décodant votre sub() Post#1
    qry_frm_tmp, affiche le résultat de FilterForm(),appliqué au subfrm. C'est une copie de qry_frm.
    Je vous avoue que c'est du code de base que j'ai, je l'ai récupéré sur un autre fichier et tenté d'adapté car pas de moi.

    En appliquant votre code

    Je ne peux faire qu'une seule recherche car ensuite cela met en dur dans la requète "R_ResultatsFiltre", le résultat de la recherche, et ensuite peut importe ce que je recherche, cela ne me met plus que ce choix dans les listes déroulantes, mais normale car ces listes pointes vers cette requète et comme elle n'a que le résultat, ces listes affichent cela.

    Ce que je souhaiterai, Faire une recherche intuitive.

    1) Avec une recherche par date (Année, Mois, semaine, jour et par période)

    2) Avec les listes déroulantes qui se remplissent suivant les autres listes déroulantes et suivant les dates, avec les listes :

    Imputations
    Refe produit
    Demandeur
    Etat

    Bon je continuerai ce soir.

    Merci beaucoup.

    Lighteux26

  9. #9
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    A aucun moment vous indiquez vouloir faire de la recherche à "la volée"
    Si vous avez effectué une 1ère recherche avec une ou +sieurs combobox et que vous voulez relancer une nouvelle recherche, il vous suffit tout simplement de réinitialiser votre frm de recherche. Il me semble avoir vu un code pour cela dans votre Post#1
    Je n'ai jamais indiqué que mes combobox Post#5 étaient alimentées par la qry_frm,ou qry_frm_tmp. Elles sont alimentées par les tbl que j'utilise dans l'exemple.
    Citation Envoyé par Lighteux26 Voir le message
    ... En appliquant votre code
    Je ne peux faire qu'une seule recherche car ensuite cela met en dur dans la requète "R_ResultatsFiltre", le résultat de la recherche, et ensuite peut importe ce que je recherche, cela ne me met plus que ce choix dans les listes déroulantes, mais normale car ces listes pointes vers cette requète et comme elle n'a que le résultat, ces listes affichent cela...
    Pour la mise à jour en cascade de combobox, lire ceci.
    Citation Envoyé par Lighteux26 Voir le message
    ... 2) Avec les listes déroulantes qui se remplissent suivant les autres listes déroulantes et suivant les dates, avec les listes...
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  10. #10
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    Hyperion, le fofo

    A aucun moment vous indiquez vouloir faire de la recherche à "la volée"
    Si vous avez effectué une 1ère recherche avec une ou +sieurs combobox et que vous voulez relancer une nouvelle recherche, il vous suffit tout simplement de réinitialiser votre frm de recherche. Il me semble avoir vu un code pour cela dans votre Post#1
    Pas évident de tout penser a expliquer ce que l'ion voudrai faire, désolé
    Oui la mise a jour ce fait lors de l'appuis sur un bouton

    Je n'ai jamais indiqué que mes combobox Post#5 étaient alimentées par la qry_frm,ou qry_frm_tmp. Elles sont alimentées par les tbl que j'utilise dans l'exemple.
    J'ai mal compris, désolé.

    [/QUOTE]Pour la mise à jour en cascade de combobox, lire ceci.[/QUOTE]

    C'est fait.

    Merci.

    Lighteux26

  11. #11
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    Hello la comunauté;

    Je reviens vers vous pour tenter de finaliser cette partie de recherche entre deux date (Une autre ne fonctionne pas, mais se sera un autre post)

    Voici ou j'en suis suite aux messages précédents

    La requète "R_ResultatsFiltre"
    Nom : Requete R_ResultatsFiltre.PNG
Affichages : 104
Taille : 27,8 Ko

    La conversion date Fr <-> Us (J'ai testé avec ou sans)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Function DateUS(ByVal DateFR As Variant)
        If IsNull(DateFR) Then Exit Function
        DateUS = "#" & Month(DateFR) & "/" & Day(DateFR) & "/" & Year(DateFR) & "#"
    End Function
    Le filtrage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    Private Sub FilterForm()
        Dim strWhere As String, s As String
        Dim DateDebutPeriode As Variant
        Dim DateFinPeriode As Variant
        strWhere = ""
     
        'Filtre suivant date du jour
        If Not IsNull(Me.cboSearchDate_Jour) And Me.cboSearchDate_Jour <> "" Then
            strWhere = "AND [Date_mouvement] = " & Format(Me.cboSearchDate_Jour, FormatDate) & ""
        End If
     
        'Filtre suivant l'année
        If Not IsNull(Me.cboSearchAnnee) And Me.cboSearchAnnee <> "" Then
            strWhere = "AND [Annee_mouvement] = " & Me.cboSearchAnnee & ""
        End If
     
        'Filtre suivant le Mois
        If Not IsNull(Me.cboSearchMois) And Me.cboSearchMois <> "" Then
            strWhere = "AND [Mois_mouvement] = " & Me.cboSearchMois & ""
        End If
     
        'Filtre suivant la semaine
        If Not IsNull(Me.cboSearchSemaine) And Me.cboSearchSemaine <> "" Then
            strWhere = "AND [Semaine_mouvement] = " & Me.cboSearchSemaine & ""
        End If
     
        'Filtre suivant N° Imputations
        If Not IsNull(Me.Cbo_SearchImputations) And Me.Cbo_SearchImputations <> "" Then
            strWhere = strWhere & " AND [ID_Imputations] = " & Me.Cbo_SearchImputations & ""
        End If
     
        '--- Filtre suivant demandeur
        If Not IsNull(Me.Cbo_SearchDemandeurs) And Me.Cbo_SearchDemandeurs <> "" Then
            strWhere = strWhere & " AND [NomPrn] = '" & Me.Cbo_SearchDemandeurs & "'"
        End If
     
        '--- Filtre suivant Référence Produit
        If Not IsNull(Me.Cbo_SearchReferenceProduits) And Me.Cbo_SearchReferenceProduits <> "" Then
            strWhere = strWhere & " AND [Reference_Produit] = '" & Me.Cbo_SearchReferenceProduits & "'"
        End If
     
        '--- Filtre suivant l'état
        If Not IsNull(Me.CboSearchEtat) And Me.CboSearchEtat <> "" Then
            strWhere = strWhere & " AND [Etat] = '" & Me.CboSearchEtat.Column(1) & "'"
        End If
     
    '    'Par etat de pointage
    '    If Not IsNull(Me.CboSearchPointe) And Me.CboSearchPointe <> "" Then
    '        strWhere = strWhere & " AND [Mouvement_Pointe] = '" & Me.CboSearchPointe.Column(1) & "'"
    '    End If
    '    'Par periode
     
    'DateDebutPeriode = DateUS(Me.TxtB_DebutPeriode.Value)
    'DateFinPeriode = DateUS(Me.TxtB_FinPeriode.Value)
     
    DateDebutPeriode = Me.TxtB_DebutPeriode.Value
    DateFinPeriode = Me.TxtB_FinPeriode.Value
     
    If Not IsNull(DateDebutPeriode) And DateDebutPeriode <> "" Then
        If Not IsNull(DateFinPeriode) And DateFinPeriode <> "" Then
            strWhere = "SELECT Id_Mouvement, [Date_Mouvement], ..... "
            strWhere = strWhere & "WHERE (R_ResultatsFiltre.[Date_Mouvement] BETWEEN " & DateDebutPeriode & " AND " & DateFinPeriode & ");"
        End If
    End If
     
        Debug.Print "strWhere: "; strWhere
        If strWhere = "" Then
            Me.Filter = ""
            Me.FilterOn = False
            CurrentDb.QueryDefs("R_ResultatsFiltre").SQL = sSQL
        Else
            strWhere = Mid(strWhere, 5)
            Me.Filter = strWhere
            Me.FilterOn = True
            '--- les champs calculés sont à remplacer par leurs formules de calcul
            s = sSQL & " WHERE " & strWhere & ";"
            s = Replace(s, "[Mois_Mouvement]", "Month([Date_Mouvement])")
            s = Replace(s, "[Annee_Mouvement]", "Year([Date_Mouvement])")
            s = Replace(s, "[Semaine_Mouvement]", "ISOWeek([Date_Mouvement])")
            CurrentDb.QueryDefs("R_ResultatsFiltre").SQL = s
        End If
    End Sub
    Message d'erreur :
    Nom : Message erreur recherche periode.PNG
Affichages : 104
Taille : 9,1 Ko

    Si vous pouviez me guider a trouver le soucis.

    Mervci beaucoup.

    Lighteux26

  12. #12
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si on se fie au message d'erreur, je pense qu'il manque les # autours des dates dans ton SQL.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  13. #13
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    Marot_r

    Merci pour la réponse

    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Si on se fie au message d'erreur, je pense qu'il manque les # autours des dates dans ton SQL.

    A+
    Si je garde le format US, ils y sont, et si je rajoute en gardant format FR, ca plante pareil.

    Nom : Capture.PNG
Affichages : 101
Taille : 11,5 Ko

    Merci

    Lighteux26

  14. #14
    Membre du Club
    Homme Profil pro
    Régisseur lumière et intégrateur led
    Inscrit en
    Janvier 2020
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Régisseur lumière et intégrateur led
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2020
    Messages : 238
    Points : 62
    Points
    62
    Par défaut
    Hyperion13, le fofo

    Hyperion13

    Cela fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Not IsNull(Me.TxtB_DebutPeriode) And Not IsNull(Me.TxtB_FinPeriode) And IsDate(Me.TxtB_DebutPeriode) And IsDate(Me.TxtB_FinPeriode) _
        And Me.TxtB_FinPeriode > Me.TxtB_DebutPeriode Then
        strWhere = strWhere & " AND [Date_Mouvement] BETWEEN " & Format(Me.TxtB_DebutPeriode, "\#dd\/mm\/yyyy\#") & "" _
                            & " AND " & Format(Me.TxtB_FinPeriode, "\#dd\/mm\/yyyy\#")
    End If
    Merci pour l'aide apporté, cela fonctionne.

    Bonne journée.

    Lighteux26

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Requête SQL entre deux dates
    Par chrysaxel dans le forum WinDev
    Réponses: 9
    Dernier message: 27/01/2023, 23h40
  2. Requête calcul entre deux date (DATEDIFF)
    Par jfcollombet dans le forum Développement
    Réponses: 1
    Dernier message: 12/03/2021, 18h44
  3. Requête Selection entre deux date
    Par dharkan dans le forum Développement
    Réponses: 5
    Dernier message: 29/05/2018, 15h18
  4. Requête contrôle entre deux dates (débutant)
    Par seifrf dans le forum Développement
    Réponses: 7
    Dernier message: 06/02/2018, 16h18
  5. [TQuery] Requête somme entre deux dates
    Par delphino7 dans le forum Bases de données
    Réponses: 15
    Dernier message: 22/04/2008, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo