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 :

Requête avec jointure et condition en Dcount


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 48
    Points
    48
    Par défaut Requête avec jointure et condition en Dcount
    Bonjour , voilà je cherche à renvoyer la valeur d'une requête Count dans une zone de texte : pour cela ça ne pose pas de problémé

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Texte6 = Dcount("Num_enfant" , " ENFANTS")
    maintenant je cherche à faire des requêtes plus compliquées , du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(ENFANTS.Num_enfant)
    FROM ENFANTS, INSCRITS, SEMAINES
    WHERE (((ENFANTS.Num_enfant)=INSCRITS.Num_enfant) And INSCRITS.Num_semaine=SEMAINES.Num_semaine And SEMAINES.Nom="H-1" And SEMAINES.Annee=Year(Now());

    Comment mis prendre ???

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 755
    Points : 57 607
    Points
    57 607
    Billets dans le blog
    42
    Par défaut
    bonsoir,

    il est préférable de faire les jointures avec INNER JOIN .... ON.... plutôt que de les faire dans la clause WHERE:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Count(ENFANTS.Num_enfant)
    FROM  (ENFANTS INNER JOIN INSCRITS ON ENFANTS.Num_enfant=INSCRITS.Num_enfant)
    INNER JOIN SEMAINES ON INSCRITS.Num_semaine=SEMAINES.Num_semaine
    WHERE (SEMAINES.Nom="H-1" And SEMAINES.Annee=Year(Now()));

    Requête à construire avec les assistants.

    Pour afficher le résultat dans une zone de texte, on peut écrire une fonction VBA qui ouvre un recordset:
    par exemple, FAQ: Comment utiliser en VBA une requête existante ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    Je cherche directement à l'implanter dans mon code Vba
    Comme mon exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Texte6 = Dcount("Num_enfant" , " ENFANTS")
    et non appeler une requête existante

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 755
    Points : 57 607
    Points
    57 607
    Billets dans le blog
    42
    Par défaut
    Ici c'est un peu plus compliqué. Il te faut créer ta fonction de comptage personnalisée:

    par exemple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte6=CompteEnfants("H-1", year(Now()))
    avec la fonction CompteEnfants à créer dans un module VBA

    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
    public Function CompteEnfants(semaine as String, Annee as Long)
    Dim Rst as DAO.Recordset
    Dim Db as DAO.Database
    Dim Source as String
    Set Db=CurrentDb
    '
    ' créer un jeu de données (recordset)
    '
    Source="SELECT COUNT.........WHERE SEMAINES.Nom='" & semaine & "' AND.....bla bla"  ' à compléter
    Set Rst=Db.OpenRecordset(Source,dbOpenDynaset)
    '
    ' récupérer la 1ère colonne de la ligne retournée 
    CompteEnfants=rst.Fields(0)
    '
    'Libération des objets
    Rst.Close
    Db.Close
    Set Rst=Nothing
    Set Db=Nothing
    '
    End Function

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    Par contre j'ai fais quelques modifications

    J'aimerais savoir si cela peut marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte6=CompteEnfants(Texte19, year(Now()))
    Car ma valeur de semaine est stockée dans une zone de texte.
    Je pense que oui car lors de l'exécution je n'ai pas d'erreur.

    ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source = "SELECT count(num_enfant) FROM INSCRITS,SEMAINES... SEMAINES.Nom = ' " & semaine & " ' and SEMAINES.Annee = ' " & Annee & " ' ; "
    Par contre j'ai une erreur à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Rst=Db.OpenRecordset(Source,dbOpenDynaset)
    avec comme message:
    Type de données incompatibles dans l'expression du critère bizarre

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 755
    Points : 57 607
    Points
    57 607
    Billets dans le blog
    42
    Par défaut
    Citation Envoyé par amartik Voir le message
    ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    source = "SELECT count(num_enfant) FROM INSCRITS,SEMAINES...
     SEMAINES.Nom = ' " & semaine & " ' and SEMAINES.Annee = ' " & Annee & " ' ; "
    il y a des espaces en trop qui entourent semaine et Annee est de type numérique à priori:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    source = "SELECT count(num_enfant) FROM INSCRITS,SEMAINES...
     SEMAINES.Nom = '" & semaine & "' and SEMAINES.Annee =" & Annee & "; "
    Au besoin, inclure un msgbox(Source) pour chercher l'erreur.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 73
    Points : 48
    Points
    48
    Par défaut
    merci ça fonctionne , ce forum m'impressionne de + en + par les compétences de ses membres

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

Discussions similaires

  1. Requête avec jointure et conditions arithmétiques
    Par leserigne dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/05/2013, 22h02
  2. optimisation d'une requête avec jointure
    Par champijulie dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/07/2005, 09h45
  3. Requête avec jointures
    Par Corben dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h55
  4. Mise à jour de table impossible après requête avec jointure
    Par sto dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/03/2004, 13h24
  5. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33

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