|
| statistique sur fichier txt |
| Débuté par infobarquee, 14 nov. 2025 20:47 - 12 réponses |
| |
| | | |
|
| |
Membre enregistré 3 messages |
|
| Posté le 14 novembre 2025 - 20:47 |
bonjour tout le monde, je découvre et créé ma première application avec windev mobile connaissant assez bien le php, je sais comment faire, mais je ne connais pas assez bien windev
j'ai un fichier txt avec des données dedans du style latitude; longitude; date; animal; sexe; nb 47.00;-2.00;17/12/25;oiseau bleu ;male;2 47.00;-2.00;17/12/25;oiseau bleu ;indetermine;2 47.01;-2.01;17/12/25;oiseau bleu;femelle;5 47.01;-2.01;17/12/25;oiseau rouge;femelle;5 47.06;-2.01;17/12/25;oiseau rouge;femelle;10
le but est donc de connaitre par type animal sexe le nb ce qui donnerait oiseau bleu male 2 oiseau bleu indetermine 2 oiseau bleu femelle 5 oiseau rouge femelle 15 ==>5+10
en php je lis les ligne, mets en tableau [i] les données pour les grouper et les compter mais avec windev, je ne trouve pas j'ai chercher avec occurence, mais rien n'a l'air de correspondre
si vous avez une idée et un exemple, merci d'avance bonne soirée |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 308 messages |
|
| Posté le 15 novembre 2025 - 09:24 |
Bonjour, La gestion séquentielle des bases de données a commencé à disparaitre au début des années 1970. A priori, il n'y a pas qu'en WLangage que tu as des lacunes, mais aussi en ce qui concerne les SGBDR. La première chose à faire est de te documenter sur l'un et l'autre. (Avant de conduire, on va à l'auto-école) Tu verras qu'il est plus simple et plus rapide d'utiliser une requête SQL (avec la clause d'agrégation SUM) que de boucler, surtout si tu vas faire vivre ta base.
-- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFM |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 2 294 messages |
|
| Posté le 15 novembre 2025 - 09:35 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 308 messages |
|
| Posté le 15 novembre 2025 - 11:42 |
COUNT va donner le nombre d'enregistrement concernant un (Race,Sexe) mais en aucun cas le nombre de spécimens observés. Dans l'exemple on aura Oiseau rouge,Femelle, 2 et non 15, qui est le SUM de 5 et 10
-- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFMMessage modifié, 15 novembre 2025 - 11:42 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 993 messages |
|
| Posté le 15 novembre 2025 - 12:39 |
Bonjour, si vous souhaitez rester sur un fichier txt, il y a les "Fonctions de gestion des chaînes de caractères" :
https://doc.pcsoft.fr/fr-FR/?3024015
où vous trouverez "ChaîneVersTableau", "ExtraitChaîne", etc ... Mais il faudra ensuite boucler pour calculer.
Une autre solution serait d'utiliser une table avec ruptures et un champ libellé dans le Bas de Rupture pour effectuer le calcul (somme).
Rupture dans un champ Table https://doc.pcsoft.fr/fr-FR/?1013305
voir la section "Calculs automatiques dans les ruptures d'un champ Table" sur cette même page pour obtenir la Somme. Par exemple, en utilisant la fonction "ExtraitChaîne" pour remplir une table "Table1" contenant 2 colonnes :
MaChaine est une chaîne = [ 47.00;-2.00;17/12/25;oiseau bleu ;male;2 47.00;-2.00;17/12/25;oiseau bleu ;indetermine;2 47.01;-2.01;17/12/25;oiseau bleu;femelle;5 47.01;-2.01;17/12/25;oiseau rouge;femelle;5 47.06;-2.01;17/12/25;oiseau rouge;femelle;10 ]
POUR TOUTE chaîne MaLigne de MaChaine SEPAREE PAR CRLF TableAjouteLigne(Table1, SansEspace(ExtraitChaîne(MaLigne, 4, ";", DepuisDébut)) + " " + SansEspace(ExtraitChaîne(MaLigne, 5, ";", DepuisDébut)), Val(ExtraitChaîne(MaLigne, 6, ";", DepuisDébut))) FIN
Cdlt |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 messages |
|
| Posté le 15 novembre 2025 - 16:17 |
Voroltinquo a écrit :
Bonjour, La gestion séquentielle des bases de données a commencé à disparaitre au début des années 1970. A priori, il n'y a pas qu'en WLangage que tu as des lacunes, mais aussi en ce qui concerne les SGBDR. La première chose à faire est de te documenter sur l'un et l'autre. (Avant de conduire, on va à l'auto-école) Tu verras qu'il est plus simple et plus rapide d'utiliser une requête SQL (avec la clause d'agrégation SUM) que de boucler, surtout si tu vas faire vivre ta base.
-- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFM
je gère des fichiers de plus de 2Go sur mon appli php, ce n'est pas pour rien, car par jour il y a plusieurs RUN générés une bdd serait saturées en très peu de temps
dans mon cas précis, effectivement, la bdd serait un plus, mais mon choix se fait sur le txt pour des traitements ultérieurs afin d'afficher les données sur qgis par la suite je pourrais remplir une bdd, puis exporter en txt ou csv, utiliser sum etc... mais tellement eu des déboires suite au crash de bdd, que le txt est plus facile, on efface le fichier et on recommence |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 993 messages |
|
| Posté le 15 novembre 2025 - 16:43 |
si vous souhaitez récupérer les calculs réalisés dans les ruptures, vous pouvez le faire par programmation. Par exemple, le code suivant va Tracer les résultats de "Libellé1" placé sur le "Bas de Rupture" qui calcule la somme par type d'animal :
i est un entier MaChaine est une chaîne POUR i = 1 _À_ Table1..Occurrence SI Table1[i][1]..Valeur <> MaChaine ALORS Trace(Table1[i][1]..Valeur + " - " + Table1[i].BasRupture1.Libellé1..Valeur) MaChaine = Table1[i][1]..Valeur FIN FIN |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 308 messages |
|
| Posté le 15 novembre 2025 - 18:25 |
Les ruptures sur un champ table, oui, mais.... il faut travailler sur des données triées. La rupture se fait sur la race et le sexe. Si on ajoute :
47.00;-2.00;18/12/25;oiseau bleu ;male;5 Les ruptures concernant oiseau bleu/male seront scindées. Une en début de champ table, l'autre après les oiseaux rouges femelles. Il faut donc alimenter le champ table avec un tableau de structures/classe que l'on aura préalablement trié sur race et sexe, voire sur race+sexe.
Rq Il serait dans ce cas judicieux de travailler en XML ou en JSON pour simplifier la récupération de données via une désérialisation.
-- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFMMessage modifié, 15 novembre 2025 - 18:56 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 993 messages |
|
| Posté le 15 novembre 2025 - 18:41 |
Salut Voroltinquo,
C'est la raison pour laquelle j'ai donné un exemple avec "ExtraitChaîne" sur le Post #5. En construisant la chaine à destination de la table, ça fonctionnera. Ainsi, pas besoin de trier.
Mais il y a de nombreuses possibilités, c'est donc un exemple parmi tant d'autres.
CdltMessage modifié, 15 novembre 2025 - 18:43 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 308 messages |
|
| Posté le 15 novembre 2025 - 19:06 |
Cédric_34 a écrit :
En construisant la chaine à destination de la table, ça fonctionnera.
ça n'empêche pas la scission des données. Le cahier des charges demande
le but est donc de connaitre par type animal sexe le nb
On aura donc (en reprenant mon exempleoiseau bleu ;male;2 oiseau bleu ;indetermine;2 oiseau bleu;femelle;5 oiseau rouge;femelle;15 oiseau bleu ;male;5 et non
oiseau bleu ;male;7 oiseau bleu ;indetermine;2 oiseau bleu;femelle;5 oiseau rouge;femelle;15
Ou alors, il faut ajouter un TableTrie à l'issue du remplissage -- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFMMessage modifié, 15 novembre 2025 - 19:30 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 993 messages |
|
| Posté le 15 novembre 2025 - 19:21 |
Tu ne tiens pas compte du Post #5 concernant le "ExtraitChaîne".
Test Flash avec le code brut du Post #5 :

Edit : je viens de m'apercevoir que je n'ai pas copié le TableTrie et qu'il n'apparait pas dans le code (si c'est ce que tu voulais dire).
MaChaine est une chaîne = [ 47.06;-2.01;17/12/25;oiseau rouge;femelle;10 47.00;-2.00;17/12/25;oiseau bleu ;male;2 47.00;-2.00;17/12/25;oiseau bleu ;indetermine;2 47.01;-2.01;17/12/25;oiseau bleu;femelle;5 47.01;-2.01;17/12/25;oiseau rouge;femelle;5 ]
POUR TOUTE chaîne MaLigne de MaChaine SEPAREE PAR CRLF TableAjouteLigne(Table1, SansEspace(ExtraitChaîne(MaLigne, 4, ";", DepuisDébut)) + " " + SansEspace(ExtraitChaîne(MaLigne, 5, ";", DepuisDébut)), Val(ExtraitChaîne(MaLigne, 6, ";", DepuisDébut))) FIN
TableTrie(Table1) Message modifié, 15 novembre 2025 - 19:42 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 308 messages |
|
| Posté le 15 novembre 2025 - 19:32 |
Cédric_34 a écrit :
Tu ne tiens pas compte du Post #5 concernant le "ExtraitChaîne".
Si, mais ajoute une nouvelle donnée, tu verras que cette donnée n'est pas ajoutée avec les autres données du même type. Le tri, quel qu'il soit, est nécessaire. Cela provient du fait que la création d'un haut de rupture est lié à l'événement "affichage d'une ligne" et qu'il n'y a pas de vérification à postériori. -- Il y a peut être plus simple, mais, ça tourne Quand tout a échoué, utilise l'option RTFMMessage modifié, 15 novembre 2025 - 19:41 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 993 messages |
|
| Posté le 15 novembre 2025 - 19:40 |
oui, désolé je viens de rectifier le post 11, je n'avais pas compris ta remarque. Mea-CulpaMessage modifié, 15 novembre 2025 - 19:45 |
| |
| |
| | | |
|
| | | | |
| | |
|