#1 Wed 01 December 2004 20:31
- Virginie Girault
- Invité
Champ maxi et mini d'une table
De: V. Girault
Bonjour,
Me voila de nouveau dans une impasse... mais je dois encore me compliquer la vie comme d'habitude. Il s'agit de trouver dans une table la valeur maxi et mini d'un champ de type entier. Je n'arrive pas a obtenir le resultat escompte, il doit y avoir un soucis dans la boucle. L'un d'entre vous aurait-il un petit algo salvateur ? Mon algo fonctionne au debut, mais apres, ca ne va plus... Merci beaucoup.
#2 Wed 01 December 2004 20:31
- Christophe Barbier
- Invité
Re: Champ maxi et mini d'une table
Bonjour,
Pourquoi ne pas utiliser une instruction SQL ?
Select Max(MonChamp), Min(MonChamp) From MaTable Into sel_ValMinMax
Fetch First From sel_ValMinMax
valMax = sel_ValMinMax.Col1
valMin = sel_ValMinMax.Col2
Cordialement,
Christophe Barbier, I²G
- Division Systeme -
christophe.barbier@ i2g.fr
#3 Fri 24 July 2009 13:48
- Seb18
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 17 Jul 2009
- Messages: 10
Re: Champ maxi et mini d'une table
Bonjour là-d'dans !
Je resors le sujet car je me pose également ce type de question.
Je dispose de plusieurs données :
- une foultitude de points avec coordonnées X, Y, Z (issus d'un MNT ; 1 point tous les 25 m) ;
- une BD de plans d'eau référencés X et Y (avec chacun plusieurs infos diverses et variées pas bien utiles dans mon cas).
Ce que j'aimerais bien réussir à faire (et que mes employeurs aussi aimeraient bien que je fasse, faut avouer) :
- établir une zone tampon de 25 m autour de chaque plan d'eau de superficie supérieure à XX ha ;
- déterminer le Z min et le Z max de chaque zone tampon, puis établir une hauteur H (H=Zmax-Zmin).
Ce que j'ai pu faire jusque-là (je débute à l'échelle d'un plan d'eau seulement, histoire de bien comprendre comment ça va fonctionner) :
- établir une zone tampon ;
- créer une table avec les points du MNT dans ma zone tampon (avec la requête 'Entirely Within') : j'ai donc une liste de points référencés X, Y et Z dans une zone de 25 m autour de mon plan d'eau.
Bon ça, c'est cool. Mais maintenant il me faut trouver Zmin et Zmax.
J'ai ainsi fouillé un peu sur le forum et testé la requête proposée dans le message précédent par C. Barbier, et j'obtiens alors le message "Variable valMin non définie."
J'ai donc essayé de trouver des requêtes : en bidouillant (y a pas d'autre mot, vraiment) avec les fonctions 'Maximum' et 'Minimum' ; puis dans le menu déroulant 'agréger' j'ai trouvé 'Min' et 'Max'. Mais comme dans les deux cas je n'ai aps trop compris comment m'en servir, hé bien ça n'a rien donné...
S.O.S.
Seb
Je sers l'État et c'est ma joie ^^'
Hors ligne
#4 Fri 24 July 2009 14:33
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: Champ maxi et mini d'une table
Bonjour Seb
J'ai une solution rapide mais il existe certainement une solution plus "intelligente".
Si vous sélectionnez vos points dans votre zone tampon, vous faites Sélection - Statistiques, vous aurez vos valeur min et max. Il suffit de les entrer dans votre base de données.
Bon ça fonctionne pour 1, 2, 10 et même 20 polygones mais si vous en avez beaucoup, ça pourrait être long. Je suis certain qu'avec ce que je viens de mentionner, quelqu'un trouvera une façon SQL de la faire. Ou même une façon FMB.
C'est jusqu'en ce moment, mon cerveau est un peu au ralenti.....
Mais l'idée de base est là...
Daniel
De retour à la géomatique
Hors ligne
#5 Fri 24 July 2009 15:07
- Seb18
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 17 Jul 2009
- Messages: 10
Re: Champ maxi et mini d'une table
Mais vous savez Daniel, par chez moi, ces temps-ci, avec le vent qu'on a, les plus efficaces restent les cerveaux lents :p
MERCI BEAUCOUP A VOUS !
(je patiente activement en attendant quelqu'un qui connaitrait une solution plus experte)
Dernière modification par Seb18 (Fri 24 July 2009 15:08)
Je sers l'État et c'est ma joie ^^'
Hors ligne
#6 Fri 24 July 2009 17:46
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Champ maxi et mini d'une table
...et j'obtiens alors le message "Variable valMin non définie."...
Il suffit de faire précéder les lignes de code de C. Barbier (prévues pour être utilisées dans la FMB) de Dim valMin As Float et Dim valMax As Float ...
Hors ligne
#7 Mon 27 July 2009 13:10
- Seb18
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 17 Jul 2009
- Messages: 10
Re: Champ maxi et mini d'une table
Yes, merci beaucoup Maurice !
Par contre je me vois dans l'obligation de continuer mon questionnement humhum
- Considérons que j'aie 100 plans d'eau à étudier. Puis-je déterminer valMin et valMax pour chacun des plans d'eau, en utilisant la commande pour l'ensemble de ma couche plan d'eau ? C'est-à-dire sans réaliser 100 fois la commande à la main.
- Si cela est possible, me serait-il possible d'ajouter automatiquement ces deux valeurs dans la table qui référencie mes plans d'eau ? En d'autres termes : quand j'utilise ma commande, j'obtiens deux colonnes 'Min(CoordZ)' et 'Max(CoordZ)' dans la sélection 'sel_valMinMax', et je souhaiterais pouvoir ajouter ces deux nouvelles colonnes à ma table existante 'plando' directement pour chacun des 100 plans d'eau. Faisable ??
En gros à la fin j'aurais une table avec mes 100 plans d'eau qui ressemblerait à (en gras ce que j'ai déjà dans la table existante, en italique souligné les données que je souhaite ajouter automatiquement à ma table) :
identifiant / commune / X / Y / surface / Max(CoordZ) / Min(CoordZ)
Auquel cas je m'approcherais fort du bonheur lol
Dernière modification par Seb18 (Mon 27 July 2009 13:11)
Je sers l'État et c'est ma joie ^^'
Hors ligne
#8 Mon 27 July 2009 16:01
- Seb18
- Participant occasionnel
- Lieu: Bourges
- Date d'inscription: 17 Jul 2009
- Messages: 10
Re: Champ maxi et mini d'une table
Finalement je me réponds, j'ai bien avancé sur mon problème
En recoupant les nombreuses infos trouvées sur le forum et les conseils d'un collègue, j'ai pu par la commande suivante obtenir quelque chose de très intéressant :
Select Identifiant, Commune, Min(CoordZ), Max(CoordZ) from [MaTable] group by Identifier into Selection
Je n'avais pas grand chose à ajouter à la commande initiale, mais c'est vrai que quand on n'a pas trop l'habitude de ce langage-là, c'est un peu la galère ^^'
Enfin j'obtiens comme je le souhaitais une table avec toutes les données nécessaires.
Du coup ce problème étant résolu, je souhaiterais conclure sur ce sujet par un immense MERCI à vous !!
Dernière modification par Seb18 (Mon 27 July 2009 16:03)
Je sers l'État et c'est ma joie ^^'
Hors ligne