vladocbm
Messages postés21Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 avril 2008
-
25 mars 2008 à 15:15
vladocbm
Messages postés21Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 avril 2008
-
8 avril 2008 à 10:20
bonjour tt le monde
j'en ai pas encore fini avec mes questions
alors mon souci cette fois ci est de calculer le total des valeures d'une colonne d'une DBGrid.
voila je crois qu'elle est claire ma question
merci pour vos reponses !
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 1 avril 2008 à 22:26
Bonjour, je ne m'y connais pas très bien en DB composants, mais je pense que c'est à peu pres pareil que des compos normaux, sauf que les données viennent d'une base ...
Tu récupères chaque valeur de chaque cellule de chaque colonne dans une boucle For selon le nombre de cellules dans la colonne ! A toi de trouver le reste :)
Cordialement, Bacterius !
PS : je repete que je ne suis pas sur de ce que je dis mais tu peux toujours essayer !
vladocbm
Messages postés21Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 avril 2008 2 avril 2008 à 09:33
merci pour la reponse, mais franchement je suis un vrai bleu et j'ai du mal a saisir ce que tu ma dis;
peut etre que ca serat sympat de m'expliquer un peut mieux (me faire un dessin par exemple)
ou bien si qlq'un peut contribuer avec son savoir ca serai sympat de votre part les amis.
merci encore.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 5 avril 2008 à 19:57
Bonjour,
Tu voulais un exemple :
Testé sur un grid normal uniquement : voici un exemple pour compter la somme des valeurs d'une colonne.
D'abord on choisit la colonne et on la met dans une variable C (par exemple) ici on va prendre la colonne 3.
Légende : gras : mots clés
bleu : types
violet : variables
rouge : ligne de code mise en évidence
vert : commentaires
function CalculSomme(C: Integer): Integer; (permet d'adapter la fonction selon la colonne voulue)
Var
I: Integer; // variable de contrôle d'une boucle For.
Som: Integer; // On récoltera la somme provisoirement ici ;)
begin Som := 0; // On initialise la somme.
for I : = 0 to MaGrid.Cols[C].Count - 1 do (on fixe la taille de la boucle)
begin Som := Som + StrToInt(MaGrid.Cols[C].Strings[I]);
end;
Result : = Som;
end;
J'ai essayé de rendre le code le plus lisible possible ...
Alors on utilise une boucle for-do car on sait combien de fois la boucle va s'executer (autant de fois qu'il y a de cellules non vides dans la colonne). A chaque iteration de la boucle, on ajoute à la somme la valeur du contenu de la cellule de la colonne (a chaque iteration on passe a la cellule suivante). Le code en rouge c'est l'ajout des valeurs des cellules.
Ensuite on affecte au résultat de la fonction la somme de toutes les valeurs (soit Som). Et voila ! Bien sur il est possible de l'optimiser, en vérifiant si le contenu de la cellule est bien de type Integer, ... mais c'est a toi de chercher ^^
Remarque : il n'est pas nécessaire d'utiliser Som, on peut directement passer par Result, mais je me sens plus à l'aise avec une variable intermédiaire
Pour appeler la fonction et récuperer la valeur : (On considère qu'il y a sur la fiche 1 tableau, 1 bouton, et 1 edit)
Quand on clique sur le bouton, on veut que l'édit contienne la somme des valeurs de la colonne 3 (par exemple) :
Edit1.Text := IntToStr(CalculSomme(3));
Pour récuperer les valeurs de la colonne 12 : Edit1.Text := IntToStr(CalculSomme(12));
Pour récuperer les valeurs d'une colonne choisie par l'utilisateur dans un autre Edit :
Edit1.Text := IntToStr(CalculSomme(StrToInt(Edit2.Text));
(Il se declenchera une erreur si le contenu de Edit2 n'est pas un entier ... Mais si tu veux l'optimiser à toi de trouver :p
Si tu as d'autres questions appelle moi, je serai ravi de t'aider
vladocbm
Messages postés21Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 avril 2008 6 avril 2008 à 09:43
merci bacterius
c tres gentil de ta part , meme si je trouve que ton pseudo n'est pas a sa place il devra etre remedius par exemple ;
enfin bref !
ton exemple est tres clair , je vais l'appliquer et voir le resultat
marci encore l'ami.
on est toujour entrain d'apprendre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 6 avril 2008 à 20:46
Bonjour,
Je te remercie Vladocbm, et dis moi toujours si le code que je te propose ne marche pas, j'ai peut être fait une erreur...
Quant au pseudo, tout le monde me le dit mais il me plait
Quand tu as besoin d'aide sur quelque chose, Code Sources est la pour t'aider
vladocbm
Messages postés21Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 avril 2008 7 avril 2008 à 10:24
bonjour bacterius
merci pour tout , c tres sympat de ta part il me reste qu'a tester le code
merci encore.
au fait , je vais poster encore une autre question , mais pas ici, pour ne pas melanger les sujets . mais je vais te dire de quoi il s'agit
depuis que j'ai commancé a apprenre delphi, je developper mes petits codes qu'avec les table paradox, alors je voudrai me mettre sur une autre , mais je ne sais pas comment choisir, meme si j'opte pour les tables sql.
je voudrai savoir ton avis.
et comment eviter de refaire tout un programme fait avec paradox pour le rendre sous une autre BD.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 7 avril 2008 à 19:21
Bonjour,
je te réponds rapidement et honnêtement ici, je n'y connais rien (mais absolument rien) en base de données. D'une facon générale, les onglets concernant les bases de données dans ma palette des composants n'ont jamais été cliqués ...
Et j'ai testé le code chez moi, j'ai peur qu'il ne convienne pas pour un DbGrid, mais il est peut etre adaptable ...
Demande plutôt à quelqu'un qui connait quelques notions de bdd ...
Désolé de pas pouvoir t'aider
vladocbm
Messages postés21Date d'inscriptionmercredi 25 octobre 2006StatutMembreDernière intervention19 avril 2008 8 avril 2008 à 10:20
bonjour bacterius (remedius)
j'ai pas encore tester ton code faute de temps (surcharge de travail), mais je crois que ca va marcher , l'esentiel que j'ai pigé l'astuce.
et pour l'autre question, j'attedrai les reponce des specialistes , et merci encore pour ton aide et ta franchise majustieuse.