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 :

Fonction DCOUNT sur plusieurs champs


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 76
    Par défaut Fonction DCOUNT sur plusieurs champs
    Bonjour,
    Je cherche à dénombrer des enregistrements avec des critères différents sur plusieurs champs. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            MsgBox ("N° " & Texte136 & ": " & DCount("[Genesis]", "Interv_date", "[Genesis] = '" & Texte136 & " ' "))
            MsgBox ("Date du " & Ma_fin & ": " & DCount("[Ma_Date]", "Interv_date", " [Ma_Date] =#" & Ma_fin & "#"))
            MsgBox (DCount("[Ma_Date] + [Genesis]", "Interv_date", " [Ma_Date] =#" & Ma_fin & "#" And "[Genesis] = '" & Texte136 & " ' "))
    Les 2 premières lignes passent bien et comptent correctement le nombre d'enregistrements. Pour la dernière ligne j'ai un message:"Erreur d'exécution 13: incompatibilité de type. Qui peut m'aider? J'ai vu le tuto de cafeine mais je ne débouche pas...

    Merc

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox (DCount("[Ma_Date] + [Genesis]", "Interv_date", " [Ma_Date] =#" & Ma_fin & "#" And "[Genesis] = '" & Texte136 & " ' "))
    Tu ajoutes Genesis à Ma_Date.
    Ton champ c'est l'un ou l'autre ? (si Interv_date est une table ou requête)
    Genesis est au même format que Ma_Date ?

    titi95

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 76
    Par défaut
    Bonjour,
    Genesis, c'est du texte. Ma_Date est au format Date. Quant à Interv_date c'est la table qui contient ces 2 champs. L'ajout des 2 valeurs est motivé par l'aide microsoft soit:
    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
    Fonction DcountVoir aussiS'applique àExempleDétailsLa fonction DCount détermine le nombre d'enregistrements dans le jeu d'enregistrements spécifié (un domaine). Utilisez la fonction DCount dans Visual Basic, une macro, une expression de requête ou un contrôle calculé.
    
    Par exemple, vous pouvez utiliser la fonction DCount dans un module pour renvoyer le nombre d'enregistrements dans une table Commandes qui correspondent aux commandes passées à une date particulière.
    
    DCount(expr, domaine, [critère])
    Les arguments de la fonction DCount sont les suivants :
    
    Argument Description 
    expr Expression qui identifie le champ dont vous voulez compter les enregistrements. Il peut s'agir d'une expression chaîne identifiant un champ dans une table ou une requête, ou d'une expression qui effectue un calcul sur les données de ce champ. Dans expr, vous pouvez inclure le nom d'un champ de table, un contrôle de formulaire, une constante ou une fonction. Si expr inclut une fonction, elle peut être intrinsèque ou définie par l'utilisateur, mais ne peut pas être une autre fonction de regroupement Domaine ou SQL. 
    domaine Expression de chaîne identifiant les enregistrements qui constituent le domaine. Il peut s'agir d'un nom de table ou d'un nom de requête qui ne nécessite aucun paramètre. 
    critère Expression chaîne facultative servant à limiter la plage des données sur laquelle porte la fonction DCount. Par exemple, critère est souvent équivalent à la clause WHERE d'une expression SQL sans le mot WHERE. En cas d'omission de critère, la fonction DCount évalue expr par rapport à l'intégralité du domaine. Chaque champ compris dans critère doit l'être aussi dans domaine, sans quoi la fonction DCount renvoie la valeur Null. 
    
    
    Remarques
    Utilisez la fonction DCount pour compter le nombre d'enregistrements d'un domaine si vous ne vous intéressez pas à leurs valeurs spécifiques. L'argument expr peut effectuer un calcul sur un champ, mais la fonction DCount indique simplement le nombre d'enregistrements, quel que soit le calcul effectué par expr.
    
    Utilisez la fonction DCount dans un contrôle calculé, lorsque vous devez déterminer des critères visant à limiter la plage des données sur laquelle porte la fonction. Par exemple, pour afficher le nombre de commandes qui doivent être livrées en Californie, affectez l'expression suivante à la propriété ControlSource d'une zone de texte :
    
    =DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
    		
    Si vous souhaitez simplement compter tous les enregistrements de domaine sans définir de restrictions, utilisez la fonction Count.
    
    
    Conseil
    
    La fonction Count a été optimisée de manière à effectuer un calcul rapide des enregistrements dans les requêtes. Utilisez la fonction Count dans une expression de requête au lieu de la fonction DCount et spécifiez les éventuels critères pour imposer des restrictions sur les résultats. Utilisez la fonction DCount pour compter les enregistrements d'un domaine à partir d'un module ou d'une macro de code, ou dans un contrôle calculé.
    
    La fonction DCount vous permet de compter le nombre d'enregistrements contenant un champ particulier qui ne fait pas partie de la source d'enregistrements sur laquelle le formulaire ou l'état est fondé. Vous pouvez, par exemple, afficher le nombre de commandes de la table Commandes dans un contrôle calculé d'un formulaire fondé sur la table Produits.
    
    La fonction DCount ne compte pas les enregistrements qui contiennent des valeurs Null dans le champ désigné par expr, sauf si expr est le caractère générique astérisque (*). Dans ce cas, la fonction DCount calcule le nombre total d'enregistrements, y compris ceux qui contiennent des champs Null. L'exemple suivant calcule le nombre d'enregistrements dans la table Commandes :
    
    intX = DCount("*", "Orders")
    		
    Si domaine est une table possédant une clé primaire, vous pouvez également compter le nombre total d'enregistrements en choisissant pour l'argument expr le champ de clé primaire, étant donné que ce champ ne peut pas contenir de valeur Null.
    
    Si expr contient plusieurs noms de champs, séparez-les à l'aide d'un opérateur de concaténation, à savoir le signe & ou le signe (+). Si le signe & sépare les champs, la fonction DCount renvoie le nombre d'enregistrements contenant des données dans n'importe quel champ répertorié. Si c'est le signe +, la fonction DCount ne compte que le nombre d'enregistrements contenant des données dans l'ensemble des champs répertoriés. L'exemple suivant illustre l'effet des deux opérateurs avec un champ contenant des données dans tous les enregistrements (Destinataire) et un champ ne contenant pas de données (Région livraison).
    
    intW = DCount("[ShipName]", "Orders")
    intX = DCount("[ShipRegion]", "Orders")
    intY = DCount("[ShipName] + [ShipRegion]", "Orders")
    intZ = DCount("[ShipName] & [ShipRegion]", "Orders")
    		
    Remarque   & est l'opérateur préféré pour la concaténation de chaînes. Il est préférable d'utiliser l'opérateur d'addition uniquement pour les opérations numériques, sauf si vous voulez propager des valeurs de type Null dans une expression.
    Cdt

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Par défaut
    Genesis est un champ de la Table : alors Ok
    Genesis est au même format que Ma_Date ?
    Genesis est de type Texte : concaténer avec un champ de type Date (si Ma_Date est de type Date) pourrait être le pb.
    Fait un essai avec un autre champ Texte à la place de Ma_Date.

    titi95

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 76
    Par défaut
    Bonjour,
    Après essai avec 2 champs texte , C pas mieux, Les 2 premières commandes passent bien. Je ne comprend pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            MsgBox ("N° " & Texte136 & ": " & DCount("[Genesis]", "Interv_date", "[Genesis] = '" & Texte136 & " ' "))
            MsgBox ("Note " & Texte59 & ": " & DCount("[Note_Date]", "Interv_date", "[Note_Date] = '" & Texte59 & " ' "))
            MsgBox (DCount("[Genesis]+[Note_Date]", "Interv_date", " [Note_Date] ='" & Texte59 & "'" And "[Genesis] = '" & Texte136 & " ' "))

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


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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 211
    Billets dans le blog
    48
    Par défaut
    bonjour,

    il faut déjà incorporer le And dans la chaîne de caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("[Ma_Date] + [Genesis]", "Interv_date", "[Ma_Date] =#" & Ma_fin & "# And [Genesis] = '" & Texte136 & " ' "))

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 76
    Par défaut
    Citation Envoyé par f-leb Voir le message
    bonjour,

    il faut déjà incorporer le And dans la chaîne de caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("[Ma_Date] + [Genesis]", "Interv_date", "[Ma_Date] =#" & Ma_fin & "# And [Genesis] = '" & Texte136 & " ' "))
    Champion!!! Merci ça marche tu mérites bien d'être expert senior. Bravco à ce forum ou l'entraide est excellente et Merci Encore

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

Discussions similaires

  1. Fonction Year() Sur un champs d'un Dcount()
    Par niamo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/07/2010, 14h12
  2. Réponses: 2
    Dernier message: 30/11/2004, 09h42
  3. Recherche d'un mot avec LIKE sur plusieurs champs
    Par reynhart dans le forum Langage SQL
    Réponses: 16
    Dernier message: 26/11/2004, 17h41
  4. [CR] Groupement dynamique sur plusieurs champs paramètrés
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 07/06/2004, 17h55
  5. recuperer les id sur plusieurs champs
    Par matN59 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2004, 10h23

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