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

VBA Access Discussion :

Critère de date à date SQL et VBA


Sujet :

VBA Access

  1. #1
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 504
    Points : 320
    Points
    320
    Par défaut Critère de date à date SQL et VBA
    Bonjour,

    Je viens vers le groupe pour que l’on me donne la main, (et oui, je n’y arrive toujours pas).
    A mon niveau, le mélange de SQL et VBA est très complexe.
    Voilà, j’ai repris le formulaire de recherche sur ce site en essayant d’y ajouter une recherche de date à date.
    Ma requête possède une colonne date, est-il possible de rechercher de date à date à partir d’une seule colonne « date »?
    Voici le code et le fichier ci-joint pour une meilleure compréhension :
    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
     
    Private Sub RefreshQuery()
    Dim date1 As Date
    Dim date2 As Date
    Dim SQL As String
    Dim SQLWhere As String
    ‘-------------------------------------------------
    SQL = "SELECT [qry_brt].[Num_auto], [qry_brt].[Ville], [qry_brt].[Date], [qry_brt].[ref], [qry_brt].[Entreprise] FROM qry_brt Where qry_brt!Num_auto <> 0 "
    'Choix de l'entreprise ---------------------------
    If Not Me.chkEnt Then
        SQL = SQL & "And qry_brt!Entreprise = '" & Me.cmbRechEnt & "' "
    End If
    'Choix de la ville--------------------------
    If Not Me.chkVille Then
        SQL = SQL & "And qry_brt!Ville = '" & Me.cmbRechVille & "' "
    End If
    'Choix de la date--------------------------
    If Not Me.chkDate Then
    SQL = SQL & "And qry_brt!Date like '*" & Me.date1 & " and " & Me.date2 & " or between " & Me.date1 & " and " & Me.date2 & "*' "
    End If
    ‘------------------------------------------------
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
    Me.lblStats.Caption = DCount("*", "qry_brt", SQLWhere) & " / " & DCount("*", "qry_brt")
    End Sub
    A mon sens cette ligne est très importante dans la recherche, mais, est-elle correcte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     SQL = "SELECT [qry_brt].[Num_auto], [qry_brt].[Ville], [qry_brt].[Date], [qry_brt].[ref], [qry_brt].[Entreprise] FROM qry_brt Where qry_brt!Num_auto <> 0 "
    Comment prendre en compte la recherche avec Me.date1 et Me.date2 ?
    Dois-je modifier les critères de recherche dans la requête, en SQL ?
    Tant de question qui attendent une réponse d’une âme sensible.
    Merci.

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir..

    Je n'ai pas très bien compris...
    Tu veux faire une recherche avec une plage de date ?
    (compris entre Date1 et Date2 du formulaire ?)

    Auquel cas, je pense que ta chaine SQL n'est pas correcte
    (celle ou il y a if not Me!ChkDate...).

    Je ne suis pas sur, mais l'opérateur Like n'est pas approprié pour les dates, il me semble..
    En plus, tu mets l'astérisque au mauvais endroit...
    Il est peu probable que dans ton champ date, il y ait autre chose que la date, en tout cas au début du champ... Je le mettrais plus volontiers à la fin.

    Ta chaine SQL est importante, bien sur, c'est celle qui donne la liste des champs affiche (row.source)
    Je n'aurai pas répété le nom de la table à chaque champ.... c'est inutile..

    Voila quelques pistes....

    Bon courage
    DIdier71 (eh oui, aussi)

  3. #3
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 504
    Points : 320
    Points
    320
    Par défaut Critère de date à date SQL et VBA
    Bonsoir,

    As-tu regardé le fichier joint ?
    (If Not Me.chkEnt Then, If Not Me.chkVille Then, If Not Me.chkDate Then)
    Servent en fonction du critère de recherche.
    En fait je ne connais pas grand chose à tous ça, j'ai besoin d'un coup de main.
    D'ou mes questions.

    Voilà.
    Merci bien.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir

    Oui, j'ai regardé le fichier joint, après avoir envoyé le message....

    Je me suis aperçu que lorsque tu saisis la date à l'aide du contrôle calendrier, tu ne récupéres pas la date dans le contrôle Date1 et Date2

    lors du "If Not Me.chkDate Then", la valeur de Me.date1 et Me.date2 est "NULL"
    (tu mets dans ton code un debug.print Me.date1 , Me.date2 et tu vois que la valeur est NULL)

    donc le filtre n'est pas possible....

    essaye donc en supprimant dans un premier temps le controle calendrier, en faisant une saisie à la main pour voir ce qui se passe..

    Bon courage..

    Didier71

  5. #5
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 504
    Points : 320
    Points
    320
    Par défaut Critère de date à date SQL et VBA
    Bonsoir,

    J'ai supprimé le nom de la table à chaque champ, j'ai supprimé le calendrier.
    J'ai modifié la ligne SQL et j'ai un message qui me dit (Erreur de syntaxe opérateur manquant).
    Que dois-je modifier ?

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir

    J'ai bossé un peu sur ta base, mais je n'y arrive pas non plus..
    Il n'y a plus de plantage, mais le filtre sur la date ne marche pas..

    J'ai "recopié " sur l'exemple, en utilisant la table directement....
    mais rien à faire.

    Lorsqu'on décoche la date, je mets la date du jour, pour pas que les champ date1 et date2 soient vides, sinon il y a plantage, car tu appelles de suite la procédure requery..

    Je ne suis pas "spécialiste", je vais avoir du mal à aller plus loin.. J'espère que quelqu'un trouvera la solution
    BOn courage
    Didier71
    Fichiers attachés Fichiers attachés

  7. #7
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    bonjour
    Attention au format des dates

  8. #8
    Membre actif
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Points : 222
    Points
    222
    Par défaut
    Salut,
    au debut de ton code tu crée deux varaible de type date Date1 et Date2

    lorsque tu fais référence à me.date1 et me.date2 tu fais référence au deux zone de texte date1 et date2 de la feuille de saisie ==>me.date1 et me date2 ne contiennent que des zone de texte, pas au format date de tes deux variable locales.

    Si tu affecte
    Date1 =cdate(me.date1)
    et Date2 = cdate(me.date)
    tu convertira des zones de texte au format date en testant la validiter des dates saisie dans tes deux variables locales

    si ces deux affectations fonctionnent, ce qui est saisie dans me.Date1, me.Date2 est bien une expression date valide mais lorsque tu te sert de ces deux variables pour les concaténés dans ton ordres SQL , Basic retransforme automatiquement tes champs Date en valeurs Texte.

    Aussi,le plus simple est, dans l'odre where de ton sql, d'utiliser directement la fonction cdate() qui convertie du texte au format date pour faire une comparaison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = " Where MaColonneDateAtester beetwen cdate('" & me.Date1 & " ') and cdate('" & me.Date2 & " ');"
    devrait mieux fonctionner. Je t'exprime l'esprit ==> à toi d'adapter à ton problème.
    attention me.Date1 est incluse, Date2 est excluse du test.

  9. #9
    Membre averti Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 504
    Points : 320
    Points
    320
    Par défaut Critère de date à date SQL et VBA
    Bonsoir à toutes et tous,
    Je m’incline, honnêtement je n’ai encore pas tout compris mais je vais analyser tous ça, au calme.
    Merci Didier71, pour ton soutien.
    Merci Jack78960 pour l’explication, j’ai pris note.
    ET, Merci Renardo, pour la solution ! Respect…
    Encore beaucoup de temps et de patience pour moi avant d’arriver à votre niveau.
    Encore merci.
    Bien cordialement

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

Discussions similaires

  1. [AC-2010] Format Date dans une requete SQL en VBA
    Par tveniere dans le forum Access
    Réponses: 2
    Dernier message: 02/04/2021, 11h54
  2. Pb de syntaxe SQL en VBA sur la sélection d'une date
    Par rch05 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 18/09/2010, 17h58
  3. [AC-2007] Requête SQL en VBA avec Date
    Par soprano6217 dans le forum VBA Access
    Réponses: 5
    Dernier message: 02/04/2009, 14h47
  4. [excel] probleme de résultat de date avec sql en vba
    Par law56100 dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/02/2009, 17h54
  5. [SQL ds VBA] Probleme de date ds un UPDATE
    Par robin des bulles dans le forum Access
    Réponses: 8
    Dernier message: 20/06/2006, 10h37

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