|
| Recherche occurrence de chaîne dans une table |
| Iniciado por Nicolas, 12,dic. 2019 15:18 - 10 respuestas |
| |
| | | |
|
| |
Miembro registrado 13 mensajes |
|
| Publicado el 12,diciembre 2019 - 15:18 |
Bonjour,
Je n'arrive pas à trouver la bonne méthodologie pour selon une problématique simple.
J'ai une table avec plusieurs colonnes liée à un fichier. Sur une rubrique de type texte, je cherche à compter les occurrences des chaines. Je m'explique : (exemple)
DescDomaine Péridodicité DonneurOrdre EAU 12 Toto GAZ 6 Tata GAZ 10 Titi ELEC 32 Toto EAU 3 Titi
Je voudrais récupérer le nombre de fois qu'un "DescDomaine" revient. Ex : EAU = 2
Je m'enlise complètement là ... 
Si quelqu'un à une idée, je suis preneur !
Bien à vous
Nicolas |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 18 mensajes |
|
| Publicado el 12,diciembre 2019 - 15:26 |
Bonjour Nicolas,
Tu souhaites compter ces données à partir de ta table ou de ton fichier? Car je peux t'aider avec une boucle qui fonctionnera pour le fichier.
Quentin. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 13 mensajes |
|
| Publicado el 12,diciembre 2019 - 15:30 |
Bonjour Quentin, Du fichier c'est parfait !Mensaje modificado, 12,diciembre 2019 - 15:31 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 18 mensajes |
|
| Publicado el 12,diciembre 2019 - 16:24 |
Re,
Pour faire simple, on cherche un fichier (FichierNonTraité), on l'ouvre et obtient on état (1 ou 0) (IDFichier), puis on boucle afin de compter le nombre de fois qu’apparaît l'élément souhaité. (Compteurlayer est mon compteur).
Si certaines choses ne sont pas claires n'hésite pas et je préciserais. PS : ne fait pas attention au nom de mes variables car ce code provient d'un de mes programmes.
Edit : le code est en dessous en version plus lisible, et tu dois changer tous mes "gcode" par l'extension de tes fichiers, par ex txt si le fichier est un fichier texte.Mensaje modificado, 12,diciembre 2019 - 16:26 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 18 mensajes |
|
| Publicado el 12,diciembre 2019 - 16:27 |

Les deux lignes Compteurlayer = ChaineOccurrence sont mes compteurs, dans ton cas ne prend que la première et change le terme "; layer " par ce que tu souhaites trouver.Mensaje modificado, 12,diciembre 2019 - 16:28 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 13 mensajes |
|
| Publicado el 12,diciembre 2019 - 16:41 |
Merci Quentin 
Je n'ai pas été assez précis dans ma description car c'était dans un fichier HFSQL, mais ton approche me donne une piste que je vais essayer d'exploiter.
Merci vraiment d'avoir pris le temps de me répondre.
Cordialement,
Nicolas |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,diciembre 2019 - 16:47 |
Oui , depuis un fichier texte on peut aussi faire
MyFile est une chaîne = fChargeTexte("H:\Partage1.txt") nMynumb est un entier = ChaîneOccurrence(MyFile,"Mon_mot_recherché",MotComplet+SansCasse)
Info (nMytot) |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 12,diciembre 2019 - 17:04 |
Pourquoi ne pas faire une requête ?
Req est une requête SQL = [ SELECT Count(*) AS Occurence FROM MaTable WHERE DescDomaine = {pDescDomaine} ] req.pDescDomaine = "EAU" HExécuteRequêteSQL(req) HLitPremier(Req)
nOccurence est un entier = req.Occurence |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 13 mensajes |
|
| Publicado el 12,diciembre 2019 - 17:08 |
Ici concrètement je cherche à compter dans une rubrique de fichier HFSQL le nombre d'occurrence d'une chaine.
Un truc du genre : BOUCLE Hlitpremier(Maintenance) "je lis la 1ere ligne et cible ma rubrique" (ex : FEU) "je note "FEU" quelque part et je compte 1 pour FEU" HlitSuivant ... "Je lis la deuxième ligne et cible la meme rubrique" (ex:FEU) encore "je note pas FEU car déjà lu et je compte 2" Hlitsuivant ...
Je ne sais pas si je suis clair ! |
| |
| |
| | | |
|
| | |
| |
| Publicado el 12,diciembre 2019 - 19:15 |
Salut
Vite fait pas testé mais bon, cela peut t'intéresser : On lit chaque ligne si le mot n'est pas dans le tableau RESULTAT, on l'ajoute avec la quantité=1 s'il y est : on incrémente le compteur. A la fin, tous les mots sont dans le tableau RESULTAT avec leur occurrence.
Res est structure domaine est chaine quantité est entier resultat est un tableau de * res indice est entier
pour tout TonFichier indice= tableaucherche(resultat,tclineaire,"domaine",TonFichier.DescDomaine) si indice <=0 tableauajouteligne(resultat,[TonFichier.descDomaine,1]) sinon resultat[indice].quantité ++ fin fin pour indice=1 a tableauoccurrence(resultat) trace(resultat[indice].domaine,resultat[indice].quantité) fin
Pour obtenir, dans ton exemple :
EAU 2 GAZ 2 ELEC 1 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 13 mensajes |
|
| Publicado el 13,diciembre 2019 - 08:40 |
Merci à tous pour vos réponses ! 
Y'a plus qu'à  |
| |
| |
| | | |
|
| | | | |
| | |
|