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

VB 6 et antérieur Discussion :

Problème de Filtrage des enregistrements par plage de Dates


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administratif
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administratif
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Problème de Filtrage des enregistrements par plage de Dates
    Bonjour les Amis (es),

    J'ai besoin de votre aide. Je me suis trouvé bloqué au bout du couloir. Je n'ai pas arrivé à dépasser l'étape de Filtrage
    des enregistrements par plage de dates.

    Je travaille sur VB6 avec Access 2007, en se servant de la technique ADO

    Mon Code est comme suit


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim P
     
    P=CInt(cmbCodePdt)
     
    SQLs="Select * from TableAchats where DateOp >= #" & DTPicker1 & "# and DateOp < #" & DTPicker2 & "# and CodePdt="& Cint(cmbCodePdt) &""
     
    if rs.state=adstateopen then rs.close
    rs.open SQLs,DB,adOpenKeySet,adClockPessimistic
     
     
    adodcFiltreDate.RecordSource=SQLs
    set DataRepotFiltreDate.DataSource=adodcFiltrePdt
     
    adodcFiltreDate.Refresh

    Je n'arrive pas à détecter mon erreur.

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut, bienvenue sur DVP
    Peut être que cela a un rapport avec Pourquoi ma requête, qui a un critère sur une date, ne me renvoie aucun enregistrement ?
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administratif
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administratif
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Peut être que ma requête SQLs lui manque quelque chose; mais je n'arrive pas à le cerner

    J'attends toujours l'aide des pro.

    Merci d'avance

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    N'y a-t-il aucun message d'erreur avec adClockPessimistic qui devrait être adLockPessimistic ?
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administratif
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administratif
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je m'excuse, il y avait une erreur de frappe. Bien sûr c'est adLockPessimistic

    Pour plus de précision, je vous expose le sujet

    J'ai dans ma TableAchats 6 enregistrements ( 3 en JAnvier et 3 en Février )

    quant je sélectionne du 01/01/2014 au 31/01/2014

    ma requête me renvoie les données correctes ( c'est à dire les enregistrements de Janvier )

    mais quant je sélectionne du 01/02/2014 au 28/02/2014, ma requête me renvoie les enregistrements de

    Février et aussi le dernier enregistrement de janvier

    Voilà mon vrai problème, et je n'arrive pas à le dépasser

    Merci pour votre attention

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLs = "Select * from TableAchats where (DateOp >= #" & DTPicker1 & "# and DateOp <= #" & DTPicker2 & "#) and CodePdt=" & CInt(cmbCodePdt) & ""
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administratif
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administratif
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    Merci pour votre réponse.
    Même avec les parenthèses dans ma requête SQL, le même problème persiste

    si je sélectionne la plage entre 01/01/2014 et 31/01/2014 tout va bien

    mais lorsque je sélectionne entre 01/02/2014 et 28/02/2014 toujours le dernière
    enregistrement de Janvier s'affiche avec ceux de Février


    Je ne sais pas où se bloque

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Est-ce que DTPicker1 et DTPicker2 te sortent les dates au format dd/mm/yyyy ?

    Si oui, il faut passer au format US mm/dd/yyyy en utilisant la fonction Format.

    Philippe

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administratif
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administratif
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour Mr Philipe

    En essayant l'astuce que vous m'aviez proposé, ma requête m'a renvoyé la réponse correcte

    Je récris les codes pour que les autres, qui se trouvaient dans le même cas que moi, la voient

    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
    cmdAfficher_Click
     
    DTPicker1=Format(DTPicker1,"mm/dd/yyyy")
    DTPicker2=Format(DTPicker2,"mm/dd/yyyy")
     
     
    Dim P
    P=Cint(cmbCodePdt)
     
    Dim D1
    D1=Cdate(DTPicker1)
     
    Dim D2
    D2=Cdate(DTPicker)
     
     
    SQLs="Select * From TableAchats where DateOp >= # " & Cdate(DTPicker1) & "# and DateOp <= #" & Cdate(DTPicker2) & "# and CodePdt="& CInt(CmbCodePdt) & ""
     
    if rs.state=adstateopen then rs.close
    rs.open SQLs, DB, adKeyOpenSet, adLockPessimistic
     
     
    adodcConsulPdt.RecordSource=SQLs
     
    set DatareportConsulPdt.DataSource=adodcConsulPdt
     
    adodcConsulPdt.Refresh


    Merci pour votre aide

  10. #10
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut

    Pour information, ma première intervention poste #2:
    Pourquoi ma requête, qui a un critère sur une date, ne me renvoie aucun enregistrement ? <--- ceci est un lien vers la FAQ.

    ATTENTION DTPicker1=Format(DTPicker1,"mm/dd/yyyy") fonctionne bien pour les dates que tu proposes, mais le jour ou tu auras besoin d'utiliser par exemple cette plage de date 01/12/2014 à 30/12/2014, DTPicker1.value passera bien à la date 12/01/2014 mais DTPicker2.value lui restera à la date 30/12/2014.

    C'est pourquoi le formatage doit être pour la variable SQL non pas sur les sélectionneurs de date, de plus les utilisateurs risquent d'être déroutés par le passage d'un sélectionneurs de date une fois au format dd/mm/yyyy une autre fois au format mm/dd/yyyy (gros risque d'erreurs)).
    Pour éviter ces inconvénients ta requête SQL devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQLs = "Select * From TableAchats where DateOp >= #" & Format(DTPicker1.Value, "mm/dd/yyyy") & "#" _
                                    & " and DateOp <= #" & Format(DTPicker2.Value, "mm/dd/yyyy") & "#" _
                                    & " and CodePdt =" & CInt(CmbCodePdt.Text)
    le formatage de DTPicker1 et DTPicker2 resteront stables, les utilisateurs (voir toi même) ne provoquerons pas d'erreur de sélection de plage.
    En conséquence, les lignes 3 à 16 deviennent inutiles.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administratif
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administratif
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    C'est une remarque pertinente. Je l'ai essayé et elle a fonctionné.
    En plus, une fois le bouton cmdAfficher est actionné, les
    zones de dates devient inactives

    DTPicker1.enabled=False
    DTPicker2.enabled=False

    Ainsi l'utilisateur sera obligé de quitter et d'activer la commande Consulter de nouveau


    Merci pour votre remarque

Discussions similaires

  1. Filtrage des enregistrements sur la derniere date
    Par Franck_P dans le forum Langage SQL
    Réponses: 4
    Dernier message: 03/12/2008, 11h15
  2. Réponses: 1
    Dernier message: 14/02/2007, 08h14
  3. Récupérer des enregistrements par tranche horaire
    Par olive_le_malin dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 19/05/2006, 16h53
  4. problème de calcul des normales par sommet
    Par captainSeb dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/01/2005, 13h42
  5. compter des enregistrement par SQL
    Par 973thom dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/11/2004, 18h26

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