Dcount avec clause "where"

Le
spectre
Bonjour,

je cale sur un petit bout de vba

le résultat attendu ("Quant") : compter le nombre de valeurs égales à
une valeur sélectionnée ("Risquec") dans le champs "code_risque " de
la table "codes_risk_cons" pour l'id de l'enregistrement ouvert dans
un formulaire!

La première partie de la fonction "DCount("[code_risque]",
"codes_risk_cons")" fonctionne sans problème mais pas la suite,
équivalente à une clause "where".


Dim code_id As Integer
code_id = [Forms]![produits_saisie]!id
Dim Risquec As String
Risquec = [Forms]![produits_saisie]!liste_choix.Column(0)
Dim Quant As Integer

Quant = DCount("[code_risque]", "codes_risk_cons", _
"[table]![codes_risk_cons]![id] = "" & code_id & "" and [table]!
[codes_risk_cons].[code_risque]= Risquec")

Merci d'avance pour votre aide
Bye
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #22826571
spectre a écrit, le 21/11/2010 20:26 :
Bonjour,

je cale sur un petit bout de vba

le résultat attendu ("Quant") : compter le nombre de valeurs égales à
une valeur sélectionnée ("Risquec") dans le champs "code_risque " de
la table "codes_risk_cons" pour l'id de l'enregistrement ouvert dans
un formulaire!

La première partie de la fonction "DCount("[code_risque]",
"codes_risk_cons")" fonctionne sans problème mais pas la suite,
équivalente à une clause "where".


Dim code_id As Integer
code_id = [Forms]![produits_saisie]!id
Dim Risquec As String
Risquec = [Forms]![produits_saisie]!liste_choix.Column(0)
Dim Quant As Integer

Quant = DCount("[code_risque]", "codes_risk_cons", _
"[table]![codes_risk_cons]![id] = ""& code_id& "" and [table]!
[codes_risk_cons].[code_risque]= Risquec")

Merci d'avance pour votre aide...
Bye



Bonjour,

Comme ça du premier coup d'œil, le choix du séparateur de texte n'e st
pas judicieux.

Le guillemet marque le début et la fin du texte à conserver tel quel,
par opposition aux noms de variables, donc il ne peut pas marquer le
début et la fin d'une valeur d'un champ texte. Il vaut mieux utiliser
l'apostrophe pour l'un des deux, ou alors le guillemet est possible mais
si je me rappelle bien il faut le mettre trois fois, ou utiliser la
fonction chr.

"[table]![codes_risk_cons]![id] = '"& code_id &
"' and [table]![codes_risk_cons].[code_risque]= Risquec"

ou

"[table]![codes_risk_cons]![id] = " & Chr$(34) & code_id & Chr$(34) &
" and [table]![codes_risk_cons].[code_risque]= Risquec"

et encore, j'ai testé la deuxième syntaxe sous VB, mais pas sous SQL.=
Gloops
Le #22826561
Gloops a écrit, le 22/11/2010 02:23 :
spectre a écrit, le 21/11/2010 20:26 :
Bonjour,

je cale sur un petit bout de vba

le résultat attendu ("Quant") : compter le nombre de valeurs égale s à
une valeur sélectionnée ("Risquec") dans le champs "code_risque " de
la table "codes_risk_cons" pour l'id de l'enregistrement ouvert dans
un formulaire!

La première partie de la fonction "DCount("[code_risque]",
"codes_risk_cons")" fonctionne sans problème mais pas la suite,
équivalente à une clause "where".


Dim code_id As Integer
code_id = [Forms]![produits_saisie]!id
Dim Risquec As String
Risquec = [Forms]![produits_saisie]!liste_choix.Column(0)
Dim Quant As Integer

Quant = DCount("[code_risque]", "codes_risk_cons", _
"[table]![codes_risk_cons]![id] = ""& code_id& "" and [table]!
[codes_risk_cons].[code_risque]= Risquec")

Merci d'avance pour votre aide...
Bye



Bonjour,

Comme ça du premier coup d'œil, le choix du séparateur de texte n 'est
pas judicieux.

Le guillemet marque le début et la fin du texte à conserver tel que l,
par opposition aux noms de variables, donc il ne peut pas marquer le
début et la fin d'une valeur d'un champ texte. Il vaut mieux utiliser
l'apostrophe pour l'un des deux, ou alors le guillemet est possible mai s
si je me rappelle bien il faut le mettre trois fois, ou utiliser la
fonction chr.

"[table]![codes_risk_cons]![id] = '"& code_id &
"' and [table]![codes_risk_cons].[code_risque]= Risquec"

ou

"[table]![codes_risk_cons]![id] = " & Chr$(34) & code_id & Chr$(34) &
" and [table]![codes_risk_cons].[code_risque]= Risquec"

et encore, j'ai testé la deuxième syntaxe sous VB, mais pas sous SQ L.




Je me rappelle, dans une base, avoir écrit une fonction de ce style :

Public Function G(texte As String) As String
G = Chr$(34) + texte + Chr$(34)
End Function

Avec ça, la requête ci-dessus devient :

"[table]![codes_risk_cons]![id] = G(code_id)
and [table]![codes_risk_cons].[code_risque]= Risquec"

bien vérifier les compatibilités, je cite ça de mémoire.
Michel__D
Le #22826871
Bonjour,

spectre a écrit :
Bonjour,

je cale sur un petit bout de vba

le résultat attendu ("Quant") : compter le nombre de valeurs égales à
une valeur sélectionnée ("Risquec") dans le champs "code_risque " de
la table "codes_risk_cons" pour l'id de l'enregistrement ouvert dans
un formulaire!

La première partie de la fonction "DCount("[code_risque]",
"codes_risk_cons")" fonctionne sans problème mais pas la suite,
équivalente à une clause "where".


Dim code_id As Integer
code_id = [Forms]![produits_saisie]!id
Dim Risquec As String
Risquec = [Forms]![produits_saisie]!liste_choix.Column(0)
Dim Quant As Integer

Quant = DCount("[code_risque]", "codes_risk_cons", _
"[table]![codes_risk_cons]![id] = "" & code_id & "" and [table]!
[codes_risk_cons].[code_risque]= Risquec")

Merci d'avance pour votre aide...
Bye



Essaye avec ceci :

...

Quant = DCount("[code_risque]", "codes_risk_cons", _
"id=" & code_id & " and [code_risque]=" & chr(34) & Risquec & chr(34))
blaise cacramp
Le #22829241
Bonjour,

Si j'ai bon souvenir, dans les fonctions domaine, il ne peut y avoir qu'une
seule condition : pas de AND ou OR ...

Cdt
Blaise

"spectre"
Bonjour,

je cale sur un petit bout de vba

le résultat attendu ("Quant") : compter le nombre de valeurs égales à
une valeur sélectionnée ("Risquec") dans le champs "code_risque " de
la table "codes_risk_cons" pour l'id de l'enregistrement ouvert dans
un formulaire!

La première partie de la fonction "DCount("[code_risque]",
"codes_risk_cons")" fonctionne sans problème mais pas la suite,
équivalente à une clause "where".


Dim code_id As Integer
code_id = [Forms]![produits_saisie]!id
Dim Risquec As String
Risquec = [Forms]![produits_saisie]!liste_choix.Column(0)
Dim Quant As Integer

Quant = DCount("[code_risque]", "codes_risk_cons", _
"[table]![codes_risk_cons]![id] = "" & code_id & "" and [table]!
[codes_risk_cons].[code_risque]= Risquec")

Merci d'avance pour votre aide...
Bye
Michel__D
Le #22830421
Bonsoir,

blaise cacramp a écrit :
Bonjour,

Si j'ai bon souvenir, dans les fonctions domaine, il ne peut y avoir qu'une
seule condition : pas de AND ou OR ...

Cdt
Blaise



Ce qui suit est issu de l'aide d'Access 2000, donc ...

Exemple de fonction CpteDom (DCount)

L'exemple suivant calcule le nombre de commandes livrées au Royaume-Uni après le 1er janvier 1995.
Le domaine consiste en la table Commandes.
L'argument critère limite le jeu d'enregistrements correspondants à ceux pour
lesquels Pays livraison est égal à Royaume-Uni et Date d'envoi est antérieure à 1-1-1995.

intX = DCount("[Date d'envoi]", "Commandes", "[Pays livraison] = 'Royaume-Uni' AND [Date d'envoi] < #1-1-95#")

Dans l'exemple suivant, l'argument critère contient la valeur en cours d'une zone de
liste modifiable appelée Pays livraison.
Les valeurs de cette zone de liste modifiable proviennent du champ Pays livraison de la table Commandes.
La référence au contrôle n'est pas entourée des guillemets caractérisant les chaînes.
Ceci garantit qu'à chaque appel de la fonction CpteDom (DCount), Microsoft Access extrait
la valeur en cours à partir du contrôle.

intX = DCount("[Date d'envoi]", "Commandes", "[Pays livraison] = '" & Forms!Commandes![Pays livraison] & "'AND [Date d'envoi] > #1-1-95#")
3stone
Le #22834821
Salut,


Quelques exemples d'utilisations des fonctions de domaines:
http://www.mvps.org/access/general/gen0018.htm

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)


spectre wrote:
Bonjour,

je cale sur un petit bout de vba

le résultat attendu ("Quant") : compter le nombre de valeurs égales à
une valeur sélectionnée ("Risquec") dans le champs "code_risque " de
la table "codes_risk_cons" pour l'id de l'enregistrement ouvert dans
un formulaire!

La première partie de la fonction "DCount("[code_risque]",
"codes_risk_cons")" fonctionne sans problème mais pas la suite,
équivalente à une clause "where".


Dim code_id As Integer
code_id = [Forms]![produits_saisie]!id
Dim Risquec As String
Risquec = [Forms]![produits_saisie]!liste_choix.Column(0)
Dim Quant As Integer

Quant = DCount("[code_risque]", "codes_risk_cons", _
"[table]![codes_risk_cons]![id] = "" & code_id & "" and [table]!
[codes_risk_cons].[code_risque]= Risquec")

Merci d'avance pour votre aide...
Bye
blaise cacramp
Le #22834811
"Michel__D" news: icends$hf8$
Bonsoir,

blaise cacramp a écrit :
Bonjour,

Si j'ai bon souvenir, dans les fonctions domaine, il ne peut y avoir
qu'une seule condition : pas de AND ou OR ...

Cdt
Blaise



Ce qui suit est issu de l'aide d'Access 2000, donc ...




*Donc quoi ?*

L'aide n'est pas pour moi la Bible ! Cherchez par exemple l'évènement
RecordExit et essayez de le mettre en oeuvre...

Ce que je sais, c'est quand j'ai plus d'une clause Where, je passe par ADO.

Cordialement,
Blaise


Exemple de fonction CpteDom (DCount)

L'exemple suivant calcule le nombre de commandes livrées au Royaume-Uni
après le 1er janvier 1995.
Le domaine consiste en la table Commandes.
L'argument critère limite le jeu d'enregistrements correspondants à ceux
pour
lesquels Pays livraison est égal à Royaume-Uni et Date d'envoi est
antérieure à 1-1-1995.

intX = DCount("[Date d'envoi]", "Commandes", "[Pays livraison] =
'Royaume-Uni' AND [Date d'envoi] < #1-1-95#")

Dans l'exemple suivant, l'argument critère contient la valeur en cours
d'une zone de
liste modifiable appelée Pays livraison.
Les valeurs de cette zone de liste modifiable proviennent du champ Pays
livraison de la table Commandes.
La référence au contrôle n'est pas entourée des guillemets caractérisant
les chaînes.
Ceci garantit qu'à chaque appel de la fonction CpteDom (DCount), Microsoft
Access extrait
la valeur en cours à partir du contrôle.

intX = DCount("[Date d'envoi]", "Commandes", "[Pays livraison] = '" &
Forms!Commandes![Pays livraison] & "'AND [Date d'envoi] > #1-1-95#")
Michel__D
Le #22835271
Bonjour,

blaise cacramp a écrit :
"Michel__D" news: icends$hf8$
Bonsoir,

blaise cacramp a écrit :
Bonjour,

Si j'ai bon souvenir, dans les fonctions domaine, il ne peut y avoir
qu'une seule condition : pas de AND ou OR ...

Cdt
Blaise


Ce qui suit est issu de l'aide d'Access 2000, donc ...




*Donc quoi ?*



Si j'ai mis donc, c'est que j'ai testé et que cela fonctionne sinon j'aurais mis
un autre commentaire du style "bien que l'aide mentionne ... etc"
3stone
Le #22836961
Salut Blaise,

blaise cacramp wrote:
Si j'ai bon souvenir, dans les fonctions domaine, il ne peut y avoir
qu'une seule condition : pas de AND ou OR ...









Tu sembles bien mal connaitre les fonctions de domaine
(et Access en général ;-)

Ces fonctions possèdent pourtant de possibilités dont tu ne te
doute même pas...

Un exemple :

= dlookup("[Marque] & chr(13) & [Type] & chr(13) & [Couleur]","T_Voiture","[Marque]='Peugot' And
[Couleur]='Jaune'")

fonctionne parfaitement.
Tu lis bien, 3 champs ramené d'un coup (en y incoporant un retour chariot),
il suffit pour cela qu'ils fassent partie du *même* domaine !

L'utilité ? Et bien, dans un état par exemple... tu ramènes d'un seul
coup le contact dans l'entreprise, avec son tél et son mail, pour alimenter
une seule zone de texte ;-)


Pour ce qui est des multi-critères, tu as exactement les mêmes
possibilités que dans une requête... il faut juste savoir l'exprimer!

PS:
On peut même utiliser une fonction de domaine parmis les autres critères...
Par contre, il faut se méfier de l'utilisation des fonctions de domaine
utilisées dans une requête qui ramène beaucoup d'enregistrement,
mais ca, c'est une autre histoire ;-)


*Donc quoi ?*

L'aide n'est pas pour moi la Bible ! Cherchez par exemple l'évènement
RecordExit et essayez de le mettre en oeuvre...



http://support.microsoft.com/?id(6477

Ce n'est pas parce que l'aide est en "avance" qu'elle est mauvaise.
Ceci dit, il y a tellement d'événements qui existent (et fonctionnent)
que je me vois mal les utiliser tous ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Blaise
Le #22844351
"3stone" 4cec59f2$
Salut Blaise,





Soit. Un début de soirée trop arrosé.

Tu sembles bien mal connaitre les fonctions de domaine



Oui

(et Access en général ;-)



Non. Pas du tout, mais je me cantonne à certains espaces et je ne suis pas
MVP

L'utilité ? Et bien, dans un état par exemple... tu ramènes d'un seul
coup le contact dans l'entreprise, avec son tél et son mail, pour
alimenter
une seule zone de texte ;-)



Les états me font chi... Je préfère programmer une sortie Excel où tout le
monde est content.


L'aide n'est pas pour moi la Bible ! Cherchez par exemple l'évènement
RecordExit et essayez de le mettre en oeuvre...



http://support.microsoft.com/?id(6477

Ce n'est pas parce que l'aide est en "avance" qu'elle est mauvaise.
Ceci dit, il y a tellement d'événements qui existent (et fonctionnent)
que je me vois mal les utiliser tous ;-)




Blabla. J'ai une question plus bas sans réponse.

Adieu, Blaise
Publicité
Poster une réponse
Anonyme