Bonjour,
essaie sans le signe = devant CpteDom
A+
Bonjour,
essaie sans le signe = devant CpteDom
A+
Bonjour, merci de continuer à me suivre sur ce fil.
En fait, je n'ai rien de plus à copier/coller actuellement puisque ce que je n'arrive pas à faire, c'est ça :
Donc, pour l'instant, voici la requête qui alimente le formulaire en mode SQL :Une fonction de domaine telle CpteDom attend trois arguments, assimilables aux composantes d'une requête SQL simple, respectivement:
SELECT
FROM
WHERE
Dans ton cas, il te faut donc compléter le troisème argument
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Entreprises.SIRET, Entreprises.[Raison Sociale], Entreprises.Enseigne, Entreprises.APE FROM Entreprises WHERE (((Entreprises.NumLStat)=25));
et, dans la MFC du champ APE, dans le formulaire :
Je ne sais pas écrire de code .... Je ne sais que copier/coller les codes que vous avez la gentillesse de me donner....
Code : Sélectionner tout - Visualiser dans une fenêtre à part =CpteDom("APE";"Entreprises";"APE='" & [APE] & "' AND NumLStat=25")>4
Bonsoir,
Bon, je viens de refaire un test... je ne suis pas convaincu que l'on puisse un CpteDom dans une expression de MFC (ou alors je suis tombé dans le même piège de syntaxe....)
Par contre j'ai fait un essai réussi en modifiant la source du formulaire - comme je le proposais au début - afin d'y ajouter le dénombrement.
Dans ton cas, cela pourrais s'écrire comme ceci:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT tE.SIRET, Entreprises.[Raison Sociale], tE.Enseigne, tE.APE, qC.NB FROM Entreprises as tE INNER JOIN (SELECT COUNT(*) as NB FROM Entreprises WHERE tE.NumLStat=25 GROUP BY APE) as qC ON qC.APE=tE.APE WHERE tE.NumLStat=25
Il te reste alors simplement à tester la valeur NB par une expression du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part NB>4
Bonjour mout1234, le fil,
J'ai un message d'erreur "Erreur réseau ou erreur disque" !
J'ai modifié le code SQL de la requête actuellement source de données en le remplaçant par le tien, incluant le test de la valeur NB, comme ceci :
C'est moi qui me plante ou .. ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT tE.SIRET, Entreprises.[Raison Sociale], tE.Enseigne, tE.APE, qC.NB FROM Entreprises AS tE INNER JOIN (SELECT COUNT(*) AS NB>4 FROM Entreprises WHERE tE.NumLStat=25 GROUP BY APE) AS qC ON qC.APE=tE.APE WHERE tE.NumLStat=25
Encore merci !
Bonjour,
Je ne pense pas que l'erreur vienne de là mais je viens de repérer une boulette dans le SQL
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT tE.SIRET, Entreprises.[Raison Sociale], tE.Enseigne, tE.APE, qC.NB FROM Entreprises AS tE INNER JOIN (SELECT COUNT(*) AS NB>4 FROM Entreprises as tE2 WHERE tE2.NumLStat=25 GROUP BY APE) AS qC ON qC.APE=tE.APE WHERE tE.NumLStat=25
A part ça ... "Erreur réseau ou Erreur Disque".... tu arrives à ouvrir la table Directement?
Idem avec ce code SQL, j'ai le même message "Erreur réseau ou erreur disque"
La table Entreprise ? Oui, bien sûr.A part ça ... "Erreur réseau ou Erreur Disque".... tu arrives à ouvrir la table Directement?
Cette manip que je voudrais faire est une fonctionnalité supplémentaire d'une base de données comportant plusieurs tables liées, requêtes et formulaire, le tout fonctionnant très bien ! .. Grâce à vous d'ailleurs car c'est en m'appuyant sur vos tutos et conseils que je l'ai créée il y a plus d'un an...
Pour ce qui est de la requête source, le code actuel fonctionne aussi :
Le formulaire qu'elle alimente s'ouvre correctement aussi, la MFC restant aléatoire, bien sûr.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT Entreprises.SIRET, Entreprises.[Raison Sociale], Entreprises.Enseigne, Entreprises.APE FROM Entreprises WHERE (((Entreprises.NumLStat)=25));
Ok, je posais la question simplement parce le message est le même lorsqu'on lance une requête basée sur une table liée non accessible (cela m'arrive souvent quand j'oublie de mettre à jour un lien...).
Sinon, as-tu essayé de créer une requête avec le code SQL de ton form?
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT tE.SIRET, Entreprises.[Raison Sociale], tE.Enseigne, tE.APE, qC.NB FROM Entreprises AS tE INNER JOIN (SELECT COUNT(*) AS NB>4 FROM Entreprises as tE2 WHERE tE2.NumLStat=25 GROUP BY APE) AS qC ON qC.APE=tE.APE WHERE tE.NumLStat=25
histoire de vérifier qu'il n'y a pas d'autres boulettes
Bonsoir,
Il y a d'autres petites boulettes Besoin de vacances mout1234 ?
* AS NB>4
* ON qC.APE=tE.APE (APE n'est pas selectionné dans la sous-requête)
Celle-ci devrait marcher (y a intérêt, je veux pas me faire chambrer)
A+
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT tE.SIRET, tE.[Raison Sociale], tE.Enseigne, tE.APE, qC.NB FROM Entreprises AS tE INNER JOIN (SELECT tE2.APE, COUNT(*) AS NB FROM Entreprises AS tE2 GROUP BY tE2.APE) AS qC ON qC.APE=tE.APE WHERE tE.NumLStat=25
Bonjour à tous,
En utilisant le code de LedZepII, le formulaire s'ouvre et, effectivement, ça en est fini du message d'erreur !
En revanche, pour le boulet que je suis, le résultat obtenu est le même qu'avec le code original, ormis la colonne NB supplémentaire...
A quoi correspondent les valeurs NB affichées en face de chaque code APE ?
Quid de ma demande originale qui était de faire ressortir par une MFC (par exemple), les suites de codes APE identiques (puisque classés en ordre croissant) ? Pour ce qui est du résultat à l'écran obtenu, il me semble être revenu à la case départ !!
Bonne journée tous !
met un peut d'ordre et t'y verras plus clair...
ORDER BY
Bâ, en demandant un classement croissant dans la colonne en question, j'obtiens la même chose, non ?
Et, pour vraiment y voir plus clair parmis des centaines de valeurs, il faudrait faire ressortir les suites de doublons par une couleur .... ce qui est l'objet de la discussion (cf mon premier message) ... et des efforts conjugués de Starec, Mout1234 et LedZepII ...
Bonjour
Donc en résumant, toutes les méthodes proposés ne te conviennent pas et te donnes des résultats aléatoires, n'est-ce-pas ?
Peux-tu être un peu plus précis sur ces résultats aléatoires.
Starec
tu m'excuseras d'avoir survolé le sujet, car j'ai vu que tu étais en de bonne main
mais:
sans trop me tromper: non.Bâ, en demandant un classement croissant dans la colonne en question, j'obtiens la même chose, non ?
ces résultats aléatoires proviennent (surement) du fait que les enregistrements de même code APE ne se suivent pas: ce que te résolve le ORDER BY sur ce champ.
Bonjour,
Je me suis planté.
Il faut laisser le "WHERE tE2.NumLStat=25" à l'intérieur de la sous-requête (ce qu'avait très bien fait Mout1234),
pour ne compter qu'en fonction de ce critère.
Cette fois ci NB ne devrait représenter le compte de APE que pour NumLStat=25.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT tE.SIRET, tE.[Raison Sociale], tE.Enseigne, tE.APE, qC.NB FROM Entreprises AS tE INNER JOIN (SELECT tE2.APE, COUNT(*) AS NB FROM Entreprises AS tE2 WHERE tE2.NumLStat=25 GROUP BY tE2.APE) AS qC ON qC.APE=tE.APE
A+
LedZepII, en utilisant ton code, je me suis aperçu que j'avais beaucoup trop de résultats à la requête et , en y regardant de plus près, j'ai vu qu'il n'y avait plus de sélection pour la valeur NumLStat = 25 ...
Je ne suis pas peu fier d'avoir réussi à le modifier ainsi :
Là, la sélection est OK et NB me donne bien le nombre de codes APE identiques présent. Il ne m'est plus resté qu'à appliquer une MFC tout ce qu'il y a de plus classique sur la valeur NB pour que les résultats que je voulais mettre en valeur sautent aux yeux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT tE.SIRET, tE.[Raison Sociale], tE.Enseigne, tE.APE, qC.NB, tE.NumLStat FROM Entreprises AS tE INNER JOIN [SELECT tE2.APE, COUNT(*) AS NB FROM Entreprises AS tE2 WHERE tE2.NumLStat=25 GROUP BY tE2.APE]. AS qC ON tE.APE = qC.APE WHERE (((tE.NumLStat)=25));
Un grand grand merci à vous tous d'être aussi présents, gentils et compétents !
So long!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager