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 :

Calculer des champs entre deux tables


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    oui
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : oui
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Calculer des champs entre deux tables
    salut tout le monde

    stp Où est le problème dans cette calcule entre 2 tables projet et lot

    pour calculer le montant de lot j'ai écrire cette programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TFprojet.TlotCalcFields(DataSet: TDataSet);
     
    begin
    Tlot['mont_lot']:=(Tlot['prix_un']* Tlot['Volum_lot']);
    end;
    ce programme est juste Mais :
    pour calculer le montant total de projet est la règle suivant :
    montant de projet:= la somme des montants des lots
    j'ai écrire cette programme en sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFprojet.TlotCalcFields(DataSet: TDataSet);
    begin
    query.SQL.Clear;
    query.SQL.Add('select sum[mont_lot] as somme from somme ') ;
    query.ExecSQL;
    query.active:=true;
    Tprojet['montant_projet']=inttostr(query.FieldValues['somme']);


    ou bien en boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TFprojet.TprojetCalcFields(DataSet: TDataSet);
    var s:integer;
    begin
    Tlot.active:=true;
    s:=0;
    Tlot.first;
    while (not Tlot.eof) do
    begin
    s:=s+ Tlot.FieldValues['mont_lot'];
    Tlot.Next;
    end;
    Tprojet['montant_projet']:=inttostr(s);
    end;

    mais toujours le message erreur suivant:

    could not convert variant of type (null) in to (integer)

    et quand je lève

    j'ai le message erreur suivant:
    exeption class EDatabasErreur('tlot: cannot perform this opération on a
    closed dataset'

    NOT:
    mont_lot : champ calculé:integer dans la table Tlot et,
    montant_projet : champ calculer dans la table projet
    la table projet est maitre
    la table lot est détalai
    stp Où est le problème dans cette calcule

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Elle est curieuse ta requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum[mont_lot] as somme from somme
    somme c'est quoi ? une table temporaire ?
    Pourquoi des []
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2007
    Messages : 94
    Points : 134
    Points
    134
    Par défaut
    Montant projet devrait etre de type integer non?
    Pourquoi tu lui affecte inttostr(s)?

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    salut; votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFprojet.TlotCalcFields(DataSet: TDataSet);
    begin
    query.SQL.Clear;
    query.SQL.Add('select sum[mont_lot] as somme from somme ') ;
    query.ExecSQL; // normalement c'est dédié pour les requêtes update et non pour le select :?
    query.active:=true;
    Tprojet['montant_projet']=inttostr(query.FieldValues['somme']);
    //montant_projet normalement c'est un float avec des décimal sinon vous allez perde des centimes ensuite des euro si le chifre d'affaire est important
    en plus montant_projet n'est pas un string selon votre définition alors pourquoi inttostr !!!!!!!

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Il n'y a que moi qui suis choqué par cette requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum[mont_lot] as somme from somme
    Depuis quand utilise ton des crochets à la place de parenthèses ?
    le nom de l'alias qui a le même nom que la table, ça doit pas toujours passer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select sum(mont_lot) as LaSomme from somme

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Bonjour

    vous l'avez fait fuir
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Décembre 2007
    Messages : 94
    Points : 134
    Points
    134
    Par défaut
    Et oui on dirait que l'intéressé s'est désabonné de la dicussion! Courage au bonhomme

  8. #8
    Membre à l'essai
    Homme Profil pro
    oui
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : oui
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 17
    Points
    17
    Par défaut champ calculer
    salut mes amies:
    désoler mais amies; par ce que y a pas l'internet pondant 1 mois
    merci de vous réponses
    maintenant j'ai un problème de calcule 2 champs de la table_ Bilan
    comment faire l'addition entre 2 champs
    volume_réalisé + volume_précédent := réalisation
    j'ai fais
    le code suivant :
    tbilan['realisation']:=tbilan['volume_réalisé]+tbilan['volume_précedent'])
    mais ne fonction pas
    ou eh le problème stp

Discussions similaires

  1. Chercher des differences entre deux tables
    Par pierre24 dans le forum SAS Base
    Réponses: 2
    Dernier message: 30/07/2008, 14h56
  2. copier des données entre deux table access (vb2005)
    Par solid_sneak06 dans le forum VB.NET
    Réponses: 9
    Dernier message: 12/07/2008, 13h20
  3. Comparaison champs entre deux tables
    Par Echizen1 dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/11/2007, 08h31
  4. Transferer a la volée des données entre deux tables
    Par schwinny dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 08h50
  5. [MySQL] Probleme de liaison de champs entre deux tables
    Par ept35 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 16/12/2005, 16h34

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