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 :

Recherche enregistrement sur une période antérieure à ma sélection [AC-2000]


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 84
    Par défaut Recherche enregistrement sur une période antérieure à ma sélection
    Bonjour à tous et tous mes vœux pour cette nouvelle année

    Voilà mon problème, je souhaiterais récupérer un enregistrement sur une période antérieure à ma sélection de départ. Je m'explique, actuel, je sélectionne sur mon outil un certain nombre d'enregistrement sur une période donnée (ex : tous les enregistrement entre le 01/01/2013 et le 25/03/2013). Le résultat s'affiche dans une zone de liste. Ce que je voudrais, c'est pouvoir récupérer dans une seconde zone de liste les enregistres de l'année précédente sur la même période (01/01/2012 au 25/03/2012). Mon formulaire à été réalisé sur la base du formulaire "recherche multicritère" de Caféïne. J'ai chercher une solution en partant du VBA ci-dessous mais rien ne fonctionne.

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    Private Sub RefreshQueryAap()
    Dim SQLWhere As String
     
    SQL = "SELECT MAPINFO_ID, ID, Journée, Jour, Mois, Année, Date_a, Semaine, Heure, Lumière,  Unité, N_PV, Secteur, " _
    & "Insee,commune, Type_voirie, N_voirie, Adresse, intersection, Hors_agglomération, Hors_intersection, " _
    & "Véhicule, PV, PR, Distance, Tué, Blessé, BH, Age_victime, Alcool, Stupéfiant, Lieu_dit, Causes_accident, " _
    & "Date_saisie, Observation FROM R_accident_ap Where R_accident_ap!MAPINFO_ID <> 0"
     
    If Not Me.chkjournee Then
        SQL = SQL & "And R_accident_ap!journée = '" & Me.cmbRechjournee & "' "
    End If
     
    If Not Me.chkmois Then
        SQL = SQL & "And R_accident_ap!mois = '" & Me.cmbRechmois & "' "
    End If
     
    If Not Me.chkannée Then
        SQL = SQL & "And R_accident_ap!année = '" & Me.cmbRechannée & "' "
    End If
     
    If Not Me.chksemaine Then
        SQL = SQL & "And R_accident_ap!Semaine = '" & Me.cmbRechsemaine & "' "
    End If
     
    If Not Me.chksecteur Then
        SQL = SQL & "And R_accident_ap!Secteur = '" & Me.cmbRechsecteur & "' "
    End If
     
    If Not Me.chkcommune Then
        SQL = SQL & "And R_accident_ap!Insee = '" & Me.cmbRechcommune & "' "
    End If
     
    If Not Me.chktvoie Then
        SQL = SQL & "And R_accident_ap!Type_voirie = '" & Me.cmbRechtvoie & "' "
    End If
     
    If Not Me.chknvoie Then
        SQL = SQL & "And R_accident_ap!N_voirie = '" & Me.cmbRechnvoie & "' "
    End If
     
    If Not Me.chkagglo Then
        SQL = SQL & "And R_accident_ap!Hors_agglomération = '" & Me.cmbRechagglo & "' "
    End If
     
    If Not Me.chkinter Then
        SQL = SQL & "And R_accident_ap!Hors_intersection = '" & Me.cmbRechinter & "' "
    End If
     
    If Not Me.chkalcool Then
        SQL = SQL & "And R_accident_ap!Alcool = '" & Me.cmbRechalcool & "' "
    End If
     
    If Not Me.chkstup Then
        SQL = SQL & "And R_accident_ap!Stupéfiant = '" & Me.cmbRechstup & "' "
    End If
     
    If Not Me.chkluminosite Then
        SQL = SQL & "And R_accident_ap!Lumière = '" & Me.cmbRechluminosite & "' "
    End If
     
    If Not Me.chkpv Then
        SQL = SQL & "And R_accident_ap!PV = '" & Me.cmbRechpv & "' "
    End If
     
    If Not Me.chkMortel Then
        SQL = SQL & "And R_accident_ap!Acc_mortel = '" & Me.cmbRechMortel & "' "
    End If
     
    If Not Me.chkvehicule Then
        SQL = SQL & "And R_accident_ap!Véhicule like '*" & Me.txtRechvehicule & "*' "
    End If
     
    If Not Me.chkadresse Then
        SQL = SQL & "And R_accident_ap!Adresse like '*" & Me.txtRechadresse & "*' "
    End If
     
    If Not Me.chkId Then
        SQL = SQL & "And R_accident_ap!Id like '*" & Me.TxtRechId & "*' "
    End If
     
    If Not Me.chkperiode Then
        SQL = SQL & " And R_accident_ap!Date_a BETWEEN # " & Format(Me.txtRechDdebut, "mm/dd/yyyy") & "# AND #" & Format(Me.txtRechDfin, "mm/dd/yyyy") & " # "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & " ORDER BY 2;"
     
    Me.lstAccAp.RowSource = SQL
    Me.lstAccAp.Requery
     
    '---------------la requête "Ri_Synthese" est le reflet de la sélection-------------------
    Dim Q As QueryDef
    Set Q = CurrentDb.QueryDefs("Ri_accident_ap")
    Q.SQL = SQL
    Set Q = Nothing
     
    End Sub
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,
    Pour cela :
    Ce que je voudrais, c'est pouvoir récupérer dans une seconde zone de liste les enregistres de l'année précédente sur la même période (01/01/2012 au 25/03/2012).
    Modifier les valeurs renvoyées par l'année en paramètre au niveau de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not Me.chkannée Then
        SQL = SQL & "And R_accident_ap!année = '" & Me.cmbRechannée-1 & "' "
    End If
    Créer une nouvelle procédure avec cette correction pour attribuer cette source à la nouvelle zone de liste de l'année antérieure.

    Le must serait de créer une procédure générique pour attribuer la source correspondante à différentes zone de liste variant selon les années.

    Bonne continuation.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,
    Pour cela :
    Ce que je voudrais, c'est pouvoir récupérer dans une seconde zone de liste les enregistres de l'année précédente sur la même période (01/01/2012 au 25/03/2012).
    Modifier les valeurs renvoyées par l'année en paramètre au niveau de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Not Me.chkannée Then
        SQL = SQL & "And R_accident_ap!année = '" & Me.cmbRechannée-1 & "' "
    End If
    Créer une nouvelle procédure avec cette correction pour attribuer cette source à la nouvelle zone de liste de l'année antérieure.

    Le must serait de créer une procédure générique pour attribuer la source correspondante à différentes zone de liste variant selon les années.

    Bonne continuation.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 84
    Par défaut
    Bonjour madefemere

    Merci encore pour ton aide.

    Effectivement une procédure générique aurait été préférable, mais je n'ai pas la connaissance suffisante pour la mettre en place .

    J'ai suivi ton conseil et cela fonctionne très bien sur l'année.

    J'aurais aimer faire la même chose sur la période et là je pense que c'est un peut plus compliqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Me.chkperiode Then
        SQL = SQL & " And R_accident_ap!Date_a BETWEEN # " & Format(Me.txtRechDdebut, "mm/dd/yyyy") & "# AND #" & Format(Me.txtRechDfin, "mm/dd/yyyy") & " # "
    End If
    A+

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Re-

    Intéresses-toi à la fonction DateDiff qui permet de trouver le décalage par rapport à une date.

    A appliquer aux valeurs de Me.txtRechDdebut et Me.txtRechDfin dans le code que tu mentionnes.

    @+

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 84
    Par défaut
    Bonjour madefemere

    Merci pour le conseil.

    En fait, c'est du côté de DateAdd qu'il fallait chercher. Je joints la syntaxe, cela pourrait servir à d'autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not Me.chkperiode Then
        SQL = SQL & " And R_accident_ap!Date_a BETWEEN # " & DateAdd("yyyy", -1, Format(Me.txtRechDdebut, "mm/dd/yyyy")) & "# AND #" & DateAdd("yyyy", -1, Format(Me.txtRechDfin, "mm/dd/yyyy")) & " # "
    End If
    Merci encore et bonne journée

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/05/2014, 23h30
  2. Réponses: 9
    Dernier message: 25/09/2008, 19h49
  3. Recherche affectation sur une période
    Par rpg71 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2008, 21h49
  4. Récupérer enregistrement sur une année antérieure
    Par Alain CARDINI dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/05/2008, 22h21
  5. Réponses: 1
    Dernier message: 08/09/2006, 15h56

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