IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

problème de calcul (DBGrid)


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Points : 132
    Points
    132
    Par défaut problème de calcul (DBGrid)
    bonsoir tout le monde

    Voila j'ai une table access et j'utilise delphi7, mon problème c'est que je n'arrive pas a faire une addition entre deux champs diffirent dans un DBGrid

    je crois que cette image parle bien de mon problème




    merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour

    Remarques
    Un DBGrid n'est pas un Tableur, juste un afficheur
    Un problème Base de Données s'expose en donnant une description des tables nécessaires (même simplifiée) et des relations entre celles-ci

    sans ma boule de cristal je vois pas de solution
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Points : 132
    Points
    132
    Par défaut
    Merci sergio de me repondre

    voila le problème

    je veut additioner la valeur de la deuxime ligne, 4eme colonne avec la valeur de la 1ere ligne, 6eme colone

    j'ai fait


    Edit3.Text:=inttostr(ADOtable1.FieldByName('montant-pro').value+ADOTable1.FieldByName('total').value);

    dans ce cas l'addtion ce fait dans le meme enregistrement ( meme ligne du DB Grid) .
    et ce que je veux le premier enregistrement du champ('total') + le dexieme enrigistrement du champ (' montant-pro')

    merci encore

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Je répète que cela n'est pas possible !
    sauf bien sur à faire
    lecture du premier enregistrement
    stockage de la valeur de total dans une variable
    lecture du 2° enregistrement
    calcul
    soit par un SQL , soit par une procedure stockée (mais je crois pas qu'access en soit capable), soit par programme
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Je répète que cela n'est pas possible !
    +1

    Par rapport à ce que tu dit (ajouter de champ numérique d'enregistrement différent) :
    Il faut que tu utilise un Stringlist dans lequel tu rangeras tes données, ensuite tu pourra utiliser une colonne pour tes calculs.

    Maintenant si ton calcul est sur le même enregistrement c'est une autre histoire.


  6. #6
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    +1

    Maintenant si ton calcul est sur le même enregistrement c'est une autre histoire.

    Merci a tous

    Oui c'est le probleme le calcule est sur le meme enregistrement

    - si vous ne riez pas
    j'ai fait avec deux tables ADO:

    1ere table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    edit1.text = inttostr(adotable1.fieldbyname('total').value);
    2eme table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Edit2.Text:=inttostr(ADOTable1.FieldByName('montant-pro').Value);
     
    procedure TForm1.Button1Click(Sender: TObject);
    var a,b : integer;
        c : Double;
    begin
    a:=strtoint(Edit1.Text);
    b:=strtoint(Edit2.Text);
    c:= a+b;
    Edit3.Text:=floattostr(c);
     
    end;

    est ça marche

    mais je ne suis pas satisfait

    svp d'autre solution

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    cela ne dit toujours pas pourquoi il faut ajouter le n°0 au n°1
    Y a t'il une relation quelconque entre les deux ?
    est-ce systématique ?
    La base est-elle bien construite ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    cela ne dit toujours pas pourquoi il faut ajouter le n°0 au n°1
    Y a t'il une relation quelconque entre les deux ?
    est-ce systématique ?
    La base est-elle bien construite ?

    je fait ça sur une demande ; meme moi je ne comprend pas ce que cela veut dire

    peut etre qu'il veut ce code pour faire d'autre chose

    Merci Master

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par MIWAN Voir le message
    ....

    Oui c'est le probleme le calcule est sur le meme enregistrement
    ...
    ????????? tu a vue ton dessin ? tu ajoute un nombre de la ligne 0 avec un nombre de la ligne 1. C'est pas le même enregistrement !!!!!



    Soit plus précis STP, si ce n'ai pas sur le meme enregistrement, je t'ai déjà proposé quelquechose.
    Maintant si c'est sur le même enregistrement et comme le demande @SERGIO si c'est systématique (ton calcul) alors une simple requete qui te retourne une xième colonne avec le calcul à l'intérieur te suffirais...


  10. #10
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message

    si c'est systématique (ton calcul) alors une simple requete qui te retourne une xième colonne avec le calcul à l'intérieur te suffirais...


    pouvez vous m'aider je n'y arrive pas a la construire


    Citation Envoyé par BuzzLeclaire Voir le message
    ????????? tu a vue ton dessin ? tu ajoute un nombre de la ligne 0 avec un nombre de la ligne 1. C'est pas le même enregistrement !!!!!

    je voulais dire que ma requette ce fait sur le meme enregistrement ( excuse ) .

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    le mieux ne serait-il pas de commencer par le commencement ?
    c'est à dire :
    exposer clairement le problème et le pourquoi de cette opération
    décrire correctement la table et son utilisation (et avoir la description de l'existante)
    et enfin avoir un jeu de données correctes (car je pense que celle présentée n'est qu'un jeu d'essai mal conçu)

    Bref , cela s'appelle faire une "analyse"

    Maintenant , je met de l'eau dans mon vin , l'opération d'ajout d'une cellule d'une ligne avec celle d'une autre ligne sur un DBGrid est quand même possible (après tout ce n'est qu'un stringgrid) . Mais je dirais que c'est quand même une horreur
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    @

    essai de passer par un ADOQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With MonAdoQuery do
    Begin
      Sql.Clear;
      Sql.Add('Select [N°], [Num-pro], [Nom-pro], [montant-Pro], [Num-facture], total, ');
      Sql.Add('Sum ([montant-pro] + total) As MonCalcul ');
      Sql.Add('From Table1 ');
      Try
        Open;
      except
         // Ton message d'erreur au cas où
      end;
    end;
    1) Créer un ADOQuery comme tu as pu créer un ADOTable
    1) J'ai mis entre crochet des champs car j'aime pas les champs avec des caractères spécials
    2) A toi d'attacher le MonAdoQuery à ton DBgrid
    3) relis bien les infos de @Sergio, c'est important l'analyse


  13. #13
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 191
    Points : 132
    Points
    132
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    @

    essai de passer par un ADOQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With MonAdoQuery do
    Begin
      Sql.Clear;
      Sql.Add('Select [N°], [Num-pro], [Nom-pro], [montant-Pro], [Num-facture], total, ');
      Sql.Add('Sum ([montant-pro] + total) As MonCalcul ');
      Sql.Add('From Table1 ');
      Try
        Open;
      except
         // Ton message d'erreur au cas où
      end;
    end;
    1) Créer un ADOQuery comme tu as pu créer un ADOTable
    1) J'ai mis entre crochet des champs car j'aime pas les champs avec des caractères spécials
    2) A toi d'attacher le MonAdoQuery à ton DBgrid
    3) relis bien les infos de @Sergio, c'est important l'analyse


    C'est genial votre présence BuzzLeclaire et @Sergieo .

    je vous remercie beaucoup pour cette aide

  14. #14
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    vaut mieux travailler coté client Agregate

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec un DBgrid
    Par PH69 dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/07/2005, 14h51
  2. Problème de calcul matricielle
    Par Clad3 dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 29/06/2005, 21h45
  3. problème de calcul des normales par sommet
    Par captainSeb dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/01/2005, 13h42
  4. [Calendar]Problème de calcul de date
    Par valerie90 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 08/12/2004, 12h13
  5. Problème de calcul unix_timestamp
    Par petit_stagiaire dans le forum Administration
    Réponses: 2
    Dernier message: 28/04/2004, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo