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 :

Besoin d'aide BDD , calcul de champs


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Besoin d'aide BDD , calcul de champs
    slt tout le monde, j'ai un petit probleme de BDD ,
    2 tables paradox , table1: cod,nom,prix,arret
    table2: cod,nom,prix,arret (contient soit A qui veut dire client bloquer ou ' ' vide qui veut dire actif)

    je veux faire table1+table2 tel que: table1.cod=table2.cod et arret <> A
    en résumé : faire la somme de prix pour chaque client a condition de ne pas être en arret=A ,
    j'ai utiliser Sql sans aucun résultat ,Ca colle pas,alors j me suis penché vers une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    var
      i: Integer;
      begin
      table1.First;
      while not table1.Eof do
      begin
     
       for I := 1 to table2.RecordCount do
         begin
          if (table1.FieldValues['cod'] =table2.FieldValues['cod'] ) and  (table1.FieldByName('arret').IsNull )then
          begin
          table3.Insert;
          table3.FieldValues['prix] := table1.FieldValues['prix']+table2.FieldValues['prix]
          end;
       end;
     
        table3.Post;
        table1.Next;table2.Next;
     
     end;
    merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par EPICRAYAN Voir le message
    slt tout le monde, j'ai un petit probleme de BDD ,
    2 tables paradox , table1: cod,nom,prix,arret
    table2: cod,nom,prix,arret (contient soit A qui veut dire client bloquer ou ' ' vide qui veut dire actif)
    Paradox, donc BDE...

    Citation Envoyé par EPICRAYAN Voir le message
    je veux faire table1+table2 tel que: table1.cod=table2.cod et arret <> A
    en résumé : faire la somme de prix pour chaque client a condition de ne pas être en arret=A ,
    j'ai utiliser Sql sans aucun résultat ,Ca colle pas,alors j me suis penché vers une boucle:
    C'est bien ce qui me chagrine, réaliser une boucle procédurale dans Delphi parce qu'une requête ne donnerait pas le bon résultat ne me parait pas du tout judicieux.

    C'est la que je vais encore me répéter en disant qu'avec la description détaillée des tables (cad type des colonnes et condition de nullité), un petit jeu d'essai et le résultat attendu par rapport à ce dernier permettrait de mieux comprendre votre problème...

    Donc, si je suppose que vos 2 tables contiennent :
    T1 cod1 nom1 100 A
    T1 cod2 nom2 100
    T1 cod3 nom3 50 A
    T1 cod4 nom4 50
    T2 cod1 nom1 200
    T2 cod2 nom2 250 A
    T2 cod3 nom3 250
    T2 cod4 nom4 250
    et que le résultat que vous souhaitez est :
    cod1 nom1 200
    cod2 nom2 100
    cod3 nom3 250
    cod4 nom4 300
    La requête suivante permettrait de l'obtenir (sous réserve que le BDE sache l'interpréter) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select cod, nom, sum(prix) FROM
       (
          select cod, nom, prix from T1 where arret <> 'A'
          UNION
          select cod, nom, prix from T2 where arret <> 'A'
       )
    group by cod, nom
    Sinon, la requête suivante permettra d'obtenir les éléments à sommer :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select cod, nom, prix from T1 where arret <> 'A'
    UNION
    select cod, nom, prix from T2 where arret <> 'A'
    order by cod, nom
    Puis en parcourant l'ensemble de données résultat, on peut sommer et transférer vers la table3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    var
      i: Integer;
      Total: float;
      Cod: string;
    begin
      // Query1 contient la requête SQL précédente
      if Query1.Active then
        Query1.Active := False;
      Query1.Active := True;
      while not Query1.Eof do
      begin
        Total := 0;
        Cod :=  Query1.FieldValues['cod'];
        while (not Query1.Eof) and (Cod = Query1.FieldValues['cod']) do
        begin
          Total := Total + Query1.FieldValues['prix'];
          Query1.Next;
        end;
     
        table3.Insert;
        table3.FieldValues['cod'] := Cod;
        table3.FieldValues['prix'] := Total;
        table3.Post;
      end;
    end;
    Remarque: Ce code Delphi est donné sans validation, quelques petits ajustement seront peut être nécessaires...
    Philippe.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut tjrs meme probleme
    re-salut,merci pour votre réponse si rapide ,c'est vraiment très gentils de votre part,
    vous avez bien compris ce que je voulais faire,mais le problème c'est comme vous dites:
    'La requête suivante permettrait de l'obtenir (sous réserve que le BDE sache l'interpréter) ' et bien Non, j'ai testé votre requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select cod, nom, sum(prix) FROM
       (
          select cod, nom, prix from T1 where arret <> 'A'
          UNION
          select cod, nom, prix from T2 where arret <> 'A'
       )
    group by cod, nom
    Ça n'a pas marché. Merci pour le temps que vous consacrez pour lire ces lignes ///

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par EPICRAYAN Voir le message
    Ça n'a pas marché. Merci pour le temps que vous consacrez pour lire ces lignes ///
    Dans ce cas, la 2° partie de ma réponse est à utiliser : la requête avec un simple UNION (de mémoire le BDE avec Paradox sait la traiter) et le code delphi pour alimenter la table de destination...
    Philippe.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    même avec la boucle que tu utilise il y'a erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    var
      i: Integer;
      begin
      table1.First;
      while not table1.Eof do
      begin
     
       for I := 1 to table2.RecordCount do  ///ici tu met une boucle mais il est incrémenée comment?
         begin
          if (table1.FieldValues['cod'] =table2.FieldValues['cod'] ) and  (table1.FieldByName('arret').IsNull )then
          begin
          table3.Insert;
          table3.FieldValues['prix] := table1.FieldValues['prix']+table2.FieldValues['prix]
          end;
       end;
     
        table3.Post;
        table1.Next;table2.Next;
     
     end;
    tu peut refaire ta boucle de cette maniére
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
      i: Integer;
      begin
      table1.First;
      while not table1.Eof do
      begin
               query1.sql.strings[0]:='select prix from '+table2.tablename+' where (cod='''+table1.fieldbyname('cod').asstring+'''';
               query1.open;
              table3.Insert;
              table3.FieldValues['prix] := table1.FieldValues['prix']+query1.FieldValues['prix]; 
             table3.Post;
             table1.Next;
      end;

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Echec....
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Dans ce cas, la 2° partie de ma réponse est à utiliser : la requête avec un simple UNION (de mémoire le BDE avec Paradox sait la traiter) et le code delphi pour alimenter la table de destination...
    Cher Mr Ph.B , très aimable de votre part ce poste si rapide ,mais j'ai fais exactement ce que vous avez dis,
    requête sql ensuite code delphi pour alimenter la table ,mais malheureusement sans réussite car table3 est tjrs vide , je sais pas vraiment ou est le problème ... merci encore pour votre aide si généreuse.

  7. #7
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut TBatchMove
    La solution peut passer par un TBatchMove. Je vais essayer de trouver un peu de temps pour te répondre plus en détail. Peux tu m'envoyer un extrait d'une de tes tables (seul le fichier db avec quelques lignes)
    Tu travailles sur quelle version de Delphi ?

  8. #8
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 559
    Points : 3 948
    Points
    3 948
    Par défaut
    @EPICRAYAN : je comprend le besoin d'aide mais évite à l'avenir de solliciter quelqu'un par message privé, cela a quelque chose d'impératif qui peut paraître agaçant.
    Ceci dit:
    Citation Envoyé par EPICRAYAN Voir le message
    re-salut,merci pour votre réponse si rapide ,c'est vraiment très gentils de votre part,
    vous avez bien compris ce que je voulais faire,mais le problème c'est comme vous dites:
    'La requête suivante permettrait de l'obtenir (sous réserve que le BDE sache l'interpréter) ' et bien Non, j'ai testé votre requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select cod, nom, sum(prix) FROM
       (
          select cod, nom, prix from T1 where arret <> 'A'
          UNION
          select cod, nom, prix from T2 where arret <> 'A'
       )
    group by cod, nom
    Ça n'a pas marché. Merci pour le temps que vous consacrez pour lire ces lignes ///
    Ca risque pas vu le niveau de support de SQL par Paradox, c'est le minimum syndical. Sans compter, quelques petits bugs de temps en temps.

    Concernant la somme des BCD, Delphi 7 si c'est par lui que tu passes, est bugué dans sa gestion des BCD, j'avais trouvé un bug dans la bibliothèque Bcd dans les années 2000, le code suppose à un endroit, je ne sais plus où, que ta config est anglo-saxonne (point décimal au lieu de la virgule, chapeau Borland, un coup de maître). Cela a sans doute été corrigé depuis.

    Je reste surpris que tu ne puisse pas faire cela sous forme de requête. Peux-tu nous donner le texte de la requête originale ?

    Je ne pourrais pas tester pour le moment car j'ai migré ma machine récemment et tout n'est pas encore terminé (j'ai un peu la flemme le soir).

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    c'est vrai qu'il aurait été bien d'avoir une pièce jointe avec les deux tables pour pouvoir faire des essais

    ma suggestion :
    - faire la requête d'UNION et utiliser le TBatchmove suggérer par ALBEWER pour me mettre dans une table temporaire
    - faire la requête de groupage sur cette table temporaire (les enregistrements avec "A" étant déjà non pris en compte et faire un batchmove de cette requête de groupage dans la table destination


    autre solution :

    créer la requête d'UNION dans un fichier SQL (pour reprendre la structure de Ph.B.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CODE,NOM,MONTANT FROM TABLE1.DB WHERE ARRET IS NULL
    UNION
    SELECT CODE,NOM,MONTANT FROM TABLE2.DB WHERE ARRET IS NULL
    à noter que je n'ai pas mis WHERE ARRET<>'A'
    en effet si le champ ARRET est un champ "nullable" le sélection par cette clause ne renverra rien ! ce qui explique peut être le
    ,mais malheureusement sans réussite car table3 est tjrs vide
    enregistrer ce texte au même endroit que les tables par exemple en UNIONTABLES.SQL // c'est ce que l'on appellerai une CTE (Common Table Expression) avec une BDD moderne

    faire ensuite la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CODE,NOM,SUM(MONTANT) AS TOTAL FROM UNIONTABLES.SQL  // voilà la différence
    et utiliser un Batchmove

    autre solution si la table de destination est créée (et vide pour cause de clé primaire) une instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TABLE3 (CODE,NOM,MONTANT) SELECT CODE,NOM,SUM(TOTAL)  FROM UNIONTABLES.SQL  GROUP BY CODE,NOM
    qui évitera tout ce traitement (boucle, batchmove) pour ne faire qu'un ExecSQL


    Citation Envoyé par e-ric
    @EPICRAYAN : je comprend le besoin d'aide mais évite à l'avenir de solliciter quelqu'un par message privé, cela a quelque chose d'impératif qui peut paraître agaçant.

    toujours à e-ric il n'y a pas de problème de BCD mais de BDD pas la peine d'enfoncer alors un "SGBD" mourant
    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

  10. #10
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    ...
    Donc, si je suppose que vos 2 tables contiennent :
    T1 cod1 nom1 100 A
    T1 cod2 nom2 100
    T1 cod3 nom3 50 A
    T1 cod4 nom4 50
    T2 cod1 nom1 200
    T2 cod2 nom2 250 A
    T2 cod3 nom3 250
    T2 cod4 nom4 250
    et que le résultat que vous souhaitez est :
    cod1 nom1 200
    cod2 nom2 100
    cod3 nom3 250
    cod4 nom4 300
    Voici un code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      tbSrc, tbDest: TTable;
      i1 : integer ;
    begin
      tbDest := TTable.Create(nil);
      tbDest.DataBaseName := '';
      tbDest.TableName := 't3.db';
      tbDest.EmptyTable ;
      tbSrc := TTable.Create(nil);
      tbSrc.DataBaseName := '' ;;
      tbSrc.TableName := 't1.db';
      tbSrc.Open ;
      tbDest.Open ;
      while not tbSrc.Eof do
      begin
        if tbSrc.Fields[3].AsString<>'A' then
        begin
          tbDest.Append;
          for i1 := 0 to (tbSrc.Fields.Count - 1) do
            tbDest.Fields[i1] := tbSrc.Fields[i1] ;
          tbDest.Post;
        end ;
        tbSrc.Next ;
      end ;
      tbSrc.Close ;
      tbSrc.TableName := 't2.db';
      tbSrc.Open ;
      while not tbSrc.Eof do
      begin
        if tbSrc.Fields[3].AsString<>'A' then
        begin
          tbDest.SetRange([tbSrc.Fields[0].AsString],[tbSrc.Fields[0].AsString]);
          if tbDest.IsEmpty then
          begin
            tbDest.Append;
            for i1 := 0 to (tbSrc.Fields.Count - 1) do
              tbDest.Fields[i1] := tbSrc.Fields[i1] ;
          end
          else
          begin
            tbDest.Edit;
            tbDest.Fields[2].AsFloat := tbDest.Fields[2].AsFloat+tbSrc.Fields[2].AsFloat ;
          end ;
          tbDest.Post;
        end ;
        tbSrc.Next ;
      end ;
      tbSrc.Close ;
      tbDest.Close ;
      tbSrc.Free ;
      tbDest.Free ;
    end;

  11. #11
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 559
    Points : 3 948
    Points
    3 948
    Par défaut
    Bonjour

    @Sergio : effectivement, je me suis un peu lourdé sur les BCD, sans doute la fatigue vespérale. Désolé d'avoir dévié le sujet.

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut problème résolue
    Citation Envoyé par ALWEBER Voir le message
    Voici un code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      tbSrc, tbDest: TTable;
      i1 : integer ;
    begin
      tbDest := TTable.Create(nil);
      tbDest.DataBaseName := '';
      tbDest.TableName := 't3.db';
      tbDest.EmptyTable ;
      tbSrc := TTable.Create(nil);
      tbSrc.DataBaseName := '' ;;
      tbSrc.TableName := 't1.db';
      tbSrc.Open ;
      tbDest.Open ;
      while not tbSrc.Eof do
      begin
        if tbSrc.Fields[3].AsString<>'A' then
        begin
          tbDest.Append;
          for i1 := 0 to (tbSrc.Fields.Count - 1) do
            tbDest.Fields[i1] := tbSrc.Fields[i1] ;
          tbDest.Post;
        end ;
        tbSrc.Next ;
      end ;
      tbSrc.Close ;
      tbSrc.TableName := 't2.db';
      tbSrc.Open ;
      while not tbSrc.Eof do
      begin
        if tbSrc.Fields[3].AsString<>'A' then
        begin
          tbDest.SetRange([tbSrc.Fields[0].AsString],[tbSrc.Fields[0].AsString]);
          if tbDest.IsEmpty then
          begin
            tbDest.Append;
            for i1 := 0 to (tbSrc.Fields.Count - 1) do
              tbDest.Fields[i1] := tbSrc.Fields[i1] ;
          end
          else
          begin
            tbDest.Edit;
            tbDest.Fields[2].AsFloat := tbDest.Fields[2].AsFloat+tbSrc.Fields[2].AsFloat ;
          end ;
          tbDest.Post;
        end ;
        tbSrc.Next ;
      end ;
      tbSrc.Close ;
      tbDest.Close ;
      tbSrc.Free ;
      tbDest.Free ;
    end;
    MERCI BEAUCOUP POUR VOTRE AIDE ,c'est la solution la plus idéale , reste a définir seulement TTbale index et tout est Bon

    MERCI AUSSI A SergioMaster POUR LES DIFFÉRENTES SOLUTIONS ,Ph.b aussi vous êtes super sympas
    e-eric

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

Discussions similaires

  1. Besoin d'aide calcul de champs
    Par bouligoulag dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/05/2012, 18h22
  2. Réponses: 1
    Dernier message: 01/10/2008, 11h36
  3. Réponses: 1
    Dernier message: 28/02/2008, 21h40
  4. [Conception] BDD & PHP, néophite à besoin d'aide pour un site
    Par Cusack dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 14/02/2006, 20h53
  5. champ text et insert : besoin d'aide
    Par Pm dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/08/2005, 14h10

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