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 :

Choix multicritère à partir d'une base secondaire


Sujet :

VBA Access

  1. #1
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut Choix multicritère à partir d'une base secondaire
    Bonjour à toutes et tous

    Je reviens vers vous après plusieurs mois d'absence.

    Voilà, je souhaiterais finaliser ma base mais je bloc sur le problème suivant.

    J'ai une base multicritères de gestion des accidents corporel de la route, basé sur celle de "Cafeine". J'ai une vingtaine de critères de choix réalisés à partir de la base "accident" (sa fonctionne très bien, voir une partie de la procédure ci-dessous).

    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    Private Sub RefreshQueryAcc()
    Dim SQLWhere As String
     
    '---Liste LstResults dans formulaire Recherche---
    '---Cette procédure permet de rechercher les données accidents nécéssaires à l'établissement des Etats---
    '---Circonstances, fiches, liste---
     
    SQL = "SELECT MAPINFO_ID, ID, Date_a, Heure, N_PV, Secteur, commune, N_voirie, Adresse, SommeDeUTué, SommeDeUBlessé, SommeDeUBH, Tué, Blessé, BH, " _
    & "Journée, Jour, Mois, Année, Lieu_dit, Hors_agglomération, Hors_intersection, Causes_accident, Date_saisie, " _
    & "Observation, Intersection, PR, Distance, Age_victime, véhicule, Lumière, Type_voirie, Surface, Cond_atmosph, " _
    & "Alcool, Stupéfiant, Insee FROM R_Accident_base Where R_Accident_base!MAPINFO_ID <> 0"
     
    If Not Me.chkjournee Then
        SQL = SQL & "And R_Accident_base!journée = '" & Me.cmbRechjournee & "' "
    End If
     
    If Not Me.chkmois Then
        SQL = SQL & "And R_Accident_base!mois = '" & Me.cmbRechmois & "' "
    End If
     
    If Not Me.chkannée Then
        SQL = SQL & "And R_Accident_base!année = '" & Me.cmbRechannée & "' "
    End If
     
    If Not Me.chksemaine Then
        SQL = SQL & "And R_Accident_base!Semaine = '" & Me.cmbRechsemaine & "' "
    End If
     
    If Not Me.chksecteur Then
        SQL = SQL & "And R_Accident_base!Secteur = '" & Me.cmbRechsecteur & "' "
    End If
     
    If Not Me.chkcommune Then
        SQL = SQL & "And R_Accident_base!Insee = '" & Me.cmbRechcommune & "' "
    End If
     
    If Not Me.chktvoie Then
        SQL = SQL & "And R_Accident_base!Type_voirie = '" & Me.cmbRechtvoie & "' "
    End If
     
    If Not Me.chknvoie Then
        SQL = SQL & "And R_Accident_base!N_voirie = '" & Me.cmbRechnvoie & "' "
    End If
     
     
    If Not Me.chkagglo Then
        SQL = SQL & "And R_Accident_base!Hors_agglomération = '" & Me.cmbRechagglo & "' "
    End If
     
    If Not Me.chkinter Then
        SQL = SQL & "And R_Accident_base!Hors_intersection = '" & Me.cmbRechinter & "' "
    End If
     
    If Not Me.chkalcool Then
        SQL = SQL & "And R_Accident_base!Alcool = '" & Me.cmbRechalcool & "' "
    End If
     
    If Not Me.chkstup Then
        SQL = SQL & "And R_Accident_base!Stupéfiant = '" & Me.cmbRechstup & "' "
    End If
     
    If Not Me.chkluminosite Then
        SQL = SQL & "And R_Accident_base!Lumière = '" & Me.cmbRechluminosite & "' "
    End If
     
    If Not Me.chkpv Then
        SQL = SQL & "And R_Accident_base!PV = '" & Me.cmbRechpv & "' "
    End If
     
    If Not Me.chkMortel Then
        SQL = SQL & "And R_Accident_base!Acc_mortel = '" & Me.cmbRechMortel & "' "
    End If
     
    If Not Me.chkvehicule Then
        SQL = SQL & "And R_Accident_base!Véhicule like '*" & Me.txtRechvehicule & "*' "
    End If
     
    If Not Me.chkadresse Then
        SQL = SQL & "And R_Accident_base!Adresse like '*" & Me.txtRechadresse & "*' "
    End If
     
    If Not Me.chkId Then
        SQL = SQL & "And R_Accident_base!Id like '*" & Me.TxtRechId & "*' "
    End If
     
    If Not Me.chkperiode Then
        SQL = SQL & " And R_Accident_base!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.lblStatsAcc.Caption = DCount("*", "R_Accident_base", SQLWhere)
    Me.lblStatsAccm.Caption = DCount("*", "R_Accident_base", SQLWhere & " and [SommeDeUTué]<>0")
    Me.lblStatsTue.Caption = "" & DSum("[SommeDeUTué]", "R_Accident_base", SQLWhere)
    Me.lblStatsBl.Caption = "" & DSum("[SommeDeUBlessé]", "R_Accident_base", SQLWhere)
    Me.lblStatsBh.Caption = "" & DSum("[SommeDeUBH]", "R_Accident_base", SQLWhere)
     
    Me.lblStatsGenAcc.Caption = DCount("*", "R_Accident_base", SQLWhere & " and [Secteur]= 'Gendarmerie'")
    Me.lblStatsGenAccm.Caption = DCount("*", "R_Accident_base", SQLWhere & " and [Secteur]= 'Gendarmerie'" & " and [SommeDeUTué]<>0")
    Me.lblStatsGenTue.Caption = "" & DSum("[SommeDeUTué]", "R_Accident_base", SQLWhere & " and [Secteur]= 'Gendarmerie'")
    Me.lblStatsGenBl.Caption = "" & DSum("[SommeDeUBlessé]", "R_Accident_base", SQLWhere & " and [Secteur]= 'Gendarmerie'")
    Me.lblStatsGenBh.Caption = "" & DSum("[SommeDeUBH]", "R_Accident_base", SQLWhere & " and [Secteur]= 'Gendarmerie'")
     
    Me.lblStatsPolAcc.Caption = DCount("*", "R_Accident_base", SQLWhere & " and [Secteur]= 'Police'")
    Me.lblStatsPolAccm.Caption = DCount("*", "R_Accident_base", SQLWhere & " and [Secteur]= 'Police'" & " and [SommeDeUTué]<>0")
    Me.lblStatsPolTue.Caption = "" & DSum("[SommeDeUTué]", "R_Accident_base", SQLWhere & " and [Secteur]= 'Police'")
    Me.lblStatsPolBl.Caption = "" & DSum("[SommeDeUBlessé]", "R_Accident_base", SQLWhere & " and [Secteur]= 'Police'")
    Me.lblStatsPolBh.Caption = "" & DSum("[SommeDeUBH]", "R_Accident_base", SQLWhere & " and [Secteur]= 'Police'")
     
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    '---------------Requête vituelle de SQL-------------------
     
    Dim Q As QueryDef
    Set Q = CurrentDb.QueryDefs("Ri_synthese_Com")
    Q.SQL = SQL
    Set Q = Nothing
     
    End Sub
    Maintenant, je souhaiterais rajouter un dernier critère de choix à partir de la base "usagers" liée à la base accident. Dans cette base "usagers", j'ai l'âge des usagers dans un champ pré calculé à partir de la date de naissance et la date de l'accident et je voudrais pouvoir rechercher tous les accidents avec des usagers d'une tranche d'âge (ex. je sélectionne tous les accidents ayant des usagers entre 20 et 30 ans).

    Merci d'avance pour vos réponses,

    Bonne journée

  2. #2
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Bonsoir !

    Est-ce cela que tu cherches ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql = sql & "And R_Accident_base!Age Between " & MaVariableDébut & " AND " & MaVariableFin
    Cordialement.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/09/2013, 13h56
  2. réplication à partir d'une base de données heterogène
    Par elbennaoui dans le forum Réplications
    Réponses: 1
    Dernier message: 16/11/2005, 16h05
  3. afficher une image à partir d'une base de données access
    Par zidenne dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/11/2005, 11h41
  4. envoi automatisé de mails à partir d'une base postgresql
    Par youn608 dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 15/02/2005, 09h06

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