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 :

test sur date [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 80
    Points : 41
    Points
    41
    Par défaut test sur date
    Bonjour a tous,
    dans ma base de donnees, j'ai cree un formulaire dans lequel je rentre 2 dates
    puis en appuyant sur un bouton, je lance une requete pour faire une recherche de tout mes clients dont la date d'installation est comprise entre ces 2 dates qui doivent s'enregistrer dans une table independante.
    Hors avec le code que j'ai mis, lorsque je trouve une date d'installation qui repond aux criteres, il m'enregistre toutes les lignes de ma table.
    Si ce n'est pas le cas il n'enregistre rien.
    Je ne sait pas ou est l'erreur.

    Voici le 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
        Dim conn As New adodb.Connection
        Dim rs As New adodb.Recordset
        Dim Enr As Recordset
        Dim max As Date
        Dim min As Date
        Dim stDocName As String
     
        DoCmd.SetWarnings False 'Permet de ne pas afficher les messages
     
        Set conn = CurrentProject.Connection
        rs.ActiveConnection = conn
        rs.Open "t_client", conn, adOpenDynamic, adLockOptimistic
     
        Set Enr = CurrentDb.OpenRecordset("t_client")
        Enr.MoveFirst
        'MsgBox Enr("date d'installation")
     
        DoCmd.RunSQL "DELETE * FROM t_client_installe"
     
        max = Forms![f_liste clients_installes]!Texte9
        min = Forms![f_liste clients_installes]!Texte7
     
        Do While rs.BOF = False And rs.EOF = False
     
            If (Enr("date d'installation") >= min) And (Enr("date d'installation") <= max) Then
                DoCmd.RunSQL "INSERT INTO t_client_installe ([numero_commande],[nom],[code postal],[date d'installation]) SELECT [numero_commande],[nom],[code postal],[date d'installation] FROM t_client"
            End If
     
            Enr.MoveNext
     
        Loop
     
        Enr.Close
        conn.Close
        Set conn = Nothing
    merci d'avance pour toute aide

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

    pourquoi pas plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If (Enr("date d'installation") Between min And  max)

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut tibiurs et GAYOT,

    Citation Envoyé par tibiurs
    il m'enregistre toutes les lignes de ma table.
    normal...

    cela devrait te suffire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        DoCmd.SetWarnings False
        DoCmd.RunSQL "DELETE * FROM t_client_installe"
        DoCmd.RunSQL "INSERT INTO t_client_installe ([numero_commande],[nom],[code postal],[date d'installation]) SELECT [numero_commande],[nom],[code postal],[date d'installation] FROM t_client WHERE [date d'installation] BETWEEN #" & Forms![f_liste clients_installes]!Texte7 & "# AND #" & Forms![f_liste clients_installes]!Texte9 & "#"

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    merci beaucoup ca fonctionne bien ormis le fait qu'il me sauvegarde tous les enregistrements qui sont antérieurs a la date min

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    je ne pense pas que la requete soit en cause. c'est souvent le pb entre le format FR saisie et US utilisé par access.

    vérifie cela et converti en conséquence.


  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    ok je viens d'essayer de convertir mes dates au format US en utilisant la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Function ap_SQLArgDate(ByVal vDate As Date) As String
        On Error Resume Next
            If Not IsNull(vDate) Then
                ap_SQLArgDate = "#" & Format$(vDate, "mm/dd/yyyy") & "#"
            End If
        End Function
    Mais lorsque je l'appelle, il me renvoie le message objet requis
    je suis un peu perdu

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 264
    Points : 19 430
    Points
    19 430
    Billets dans le blog
    63
    Par défaut
    Salut,

    Peux-tu nous donner ton sql complet ?

    merci.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    voici le code que j'appelle
    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
        Dim max As Date
        Dim min As Date
        Dim stDocName As String
        Dim max1 As Date
        Dim min1 As Date
        Dim install As Date
     
        DoCmd.SetWarnings False 'Permet de ne pas afficher les messages
     
        DoCmd.RunSQL "DELETE * FROM t_client_installe"
     
        max = Forms![f_liste clients_installes]!Texte9
        min = Forms![f_liste clients_installes]!Texte7
     
        min1 = ap_SQLArgDate(min)
        max1 = ap_SQLArgDate(max)
     
        install = ap_SQLArgDate(t_client_installe![date d'installation])
     
        DoCmd.RunSQL "INSERT INTO t_client_installe ([numero_commande],[nom],[code postal],[date d'installation]) SELECT [numero_commande],[nom],[code postal],[date d'installation] FROM t_client WHERE install BETWEEN #" & min1 & "# AND #" & max1 & "#"

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 274
    Points
    34 274
    Par défaut
    salut,
    perso, plutôt que de multiplier les fonctions, et donc les risques d'erreur, je serais passé directement dans la ligne finale avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(CDate(),"MM/DD/YYYY")
    d'autre part ta variable install ne sert pas dans ton code, est-ce normal ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 80
    Points : 41
    Points
    41
    Par défaut
    OK je viens de tester ça et ça marche du tonnerre
    Je n'ai pas pu l'intégrer directement dans ma ligne SQL (INSERT INTO), j'ai du passer par des variables intermédiaires malgré tout
    merci a vous

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

Discussions similaires

  1. [MySQL] test sur date
    Par stefano dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/07/2012, 19h40
  2. [XL-2007] petit test sur dates alimentées par variable tableau
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/02/2012, 11h21
  3. [SQL*Loader] Test sur date non renseigné
    Par frostiesI7 dans le forum SQL*Loader
    Réponses: 5
    Dernier message: 25/10/2011, 17h25
  4. Problème test sur date
    Par gdavezac dans le forum Débuter
    Réponses: 3
    Dernier message: 25/04/2009, 15h10
  5. Test sur date + heure
    Par zoidy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/08/2007, 11h15

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