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 :

Supprim un enregistrement de table2 si le même dans table1


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Supprim un enregistrement de table2 si le même dans table1
    Bonjour,
    voilà mon problème: J'ai une application BD Paradox7. J'ai une Form1 et une dbgrid1 avec la table1. J'ai aussi une Form2, avec une dbgrid2 et une table2 sur ce Form2. Donc, sur Form2 (dbgrid2) j'enregistre par ex. certains produits, qui ont leur numéro de série. Maintenant, si j'inscrit le même produit (donc, le même No de série dans mon dbgrid1, je voudrais que ce même produit soit automatiquement supprimé de mon dbgrid2!
    Donc, il faudrait une instruction du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if form1.DBGrid1.DataSource.DataSet(nouveau enregistrement?)=Form2.DBGrid2.DataSource2.DataSet2.(1 enregistrement parmi tous) then Form2.DBGrid2.DataSource2.DataSet2.Delete(celui qui est identique)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if form1.table1.DataSource.(nouveau enregistrement?)=Form2.table2.DataSource2.(le même No de champ No série) then Form2.Table2.DataSource2.Delete(celui qui est identique)
    Voilà, si qq1 aurait une idée...et merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut slt
    Bonjour,
    personne n'aurait une idée comment resoudre ce problème?

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 12
    Points : 6
    Points
    6
    Par défaut slt
    Salut!
    J'ai le même problème...mais sans réponse!
    On attend des "forts"...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut slt
    Oui, je ne trouve pas de solution...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Instruction pour rechercher un record dans un dataset : LOCATE
    (voir aide delphi : bouton F1)

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut slt
    Bonjour DeadSoul, et merci de ta réponse!
    Tu est gentil, mais je suis débutant, et il me faudrait un exemple concrèt...
    Peut-tu me donner un stp?
    Merci d'avance ...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Points : 78
    Points
    78
    Par défaut Re: Supprim un enregistrement de table2 si le même dans tabl
    Citation Envoyé par arno24
    Bonjour,
    voilà mon problème: J'ai une application BD Paradox7. J'ai une Form1 et une dbgrid1 avec la table1. J'ai aussi une Form2, avec une dbgrid2 et une table2 sur ce Form2. Donc, sur Form2 (dbgrid2) j'enregistre par ex. certains produits, qui ont leur numéro de série. Maintenant, si j'inscrit le même produit (donc, le même No de série dans mon dbgrid1, je voudrais que ce même produit soit automatiquement supprimé de mon dbgrid2!
    Donc, il faudrait une instruction du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if form1.DBGrid1.DataSource.DataSet(nouveau enregistrement?)=Form2.DBGrid2.DataSource2.DataSet2.(1 enregistrement parmi tous) then Form2.DBGrid2.DataSource2.DataSet2.Delete(celui qui est identique)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if form1.table1.DataSource.(nouveau enregistrement?)=Form2.table2.DataSource2.(le même No de champ No série) then Form2.Table2.DataSource2.Delete(celui qui est identique)
    Voilà, si qq1 aurait une idée...et merci


    il faut écrire une procédure de la forme suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Table2BeforeDelete(DataSet: TDataSet);
     begin
     if    Table1.Locate('produit',Table2produit.value,[]) then
            begin
            While   ( ici lorsque l'enregistrement produit se trouve plusieurs fois)
           table1.Locate'produit',Table2produit.value,[])do
            Table2.Delete;
            end;
     end;
    [Modération, Seb : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]

  8. #8
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut Essai
    Cree une procedure !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    For I:=1 to la_taille_du_tableau1 Do
     For J:=1 to la_taille_du_tableau2 Do
      If tableau1[i]=tableau2[j] then 
       Begin
           Ton intruction de suppression
       End;
    Avec un truc comme ça sa doit fonctionner
    A.Morel

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut slt
    Salut le monde,
    j'ai essayé ce que vous m'avez conseillés, mais CA NE MARCHE PAS!!!
    Exemple: Dans la table 1, il y a 10 champs, dont 1 No de série. Dans la table 2 j'ai 7 champs, dont 1 No de série. Alors: si dans un champ de la table 1 je rentre un No de série qui existe déjà dans la table 2, alors, on supprime automatiquement l'enregistrement de celui de la table 2.
    Pouvez-vous essayer "sur un exemple" svp? Je n'arrive pas du tout à solutionner ça!!
    Merci dans tous les cas...

  10. #10
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 12
    Points : 6
    Points
    6
    Par défaut hi
    Sincèrement, je ne pense pas que ce soit possible...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut slt
    Tu rigoles, j'espère...?? Pourquoi ce serait pas possible?? Tout est possible, il suffit de savoir comment faire...!

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut slt
    Personne ne peut m'aider...?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Points : 78
    Points
    78
    Par défaut Re: slt
    Citation Envoyé par arno24
    Personne ne peut m'aider...?

    Cettre procedure permet de chercher un numéro de serie dans table1 et de vérifier si ce dernier se trouve dans table2 de le supprimer.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Table2BeforeDelete(DataSet: TDataSet); 
    begin 
    Table1.First;
    while not Table1 = EOF Do
    begin
       if Table1.Locate('Numero',Table2Numero.value,[]) then 
         begin 
        While ( ici lorsque l'enregistrement numero se trouve plusieurs fois) 
              table1.Locate('numero',Table2numero.value,[])do 
             Table2.Delete; 
        end; 
       Table1.Next;
    end;
    [Modération, Seb : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut salut
    Bonjour bNoureddine, et merci de ta gentille réponse!
    Voici le code que j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Table1.First;
    while not Table1 = EOF Do
    begin
       if Table1.Locate('Serial',Form2.Table2Serial.value,[]) then
          Form2.Table2.Delete;
        end;
       Table1.Next;
    end;
    mais j'obtiens les érreurs suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     (865)Constante 0 convertie en NIL
    (1609)Opérateur non applicable à ce type d'opérande
    Le problème est sur la ligne "while not Table1 = EOF Do"
    J'ai essayé aussi "while Table1 <> EOF Do", mais sans succès.

    Je n'ai pas de plusieurs enregistremments du même No de série.

    Un grand merci d'avance...

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 66
    Points : 78
    Points
    78
    Par défaut Re: salut
    Citation Envoyé par arno24
    Bonjour bNoureddine, et merci de ta gentille réponse!
    Voici le code que j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Table1.First;
    while not Table1 = EOF Do
    begin
       if Table1.Locate('Serial',Form2.Table2Serial.value,[]) then
          Form2.Table2.Delete;
        end;
       Table1.Next;
    end;
    mais j'obtiens les érreurs suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     (865)Constante 0 convertie en NIL
    (1609)Opérateur non applicable à ce type d'opérande
    Le problème est sur la ligne "while not Table1 = EOF Do"
    J'ai essayé aussi "while Table1 <> EOF Do", mais sans succès.

    Je n'ai pas de plusieurs enregistremments du même No de série.

    Un grand merci d'avance...

    Effectivement j'ai fait une erreur syntaxique dans la boucle, le code ci- dessus devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Table1.First;
    while not Table1.EOF Do
    begin
       if Table1.Locate('Serial',Form2.Table2Serial.value,[]) then
          Form2.Table2.Delete;
        end;
       Table1.Next;
    end;
    [Modération, Seb : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 11
    Points : 5
    Points
    5
    Par défaut MERCIIIIIIIIII
    MERCIIIIIIIIIII bNoureddine, avec des petites corrections c'est exactement ce qu'il me fallait!!!
    Tu est un vrai copain!
    Je remercie aussi à ce forum pour toute aide...
    Bonne continuation!

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

Discussions similaires

  1. supprimer un enregistrement vide dans une table oracle
    Par shurized dans le forum Bases de données
    Réponses: 11
    Dernier message: 07/09/2004, 16h55
  2. Supprimer un enregistrement
    Par Riouxe21 dans le forum ASP
    Réponses: 14
    Dernier message: 16/07/2004, 17h43
  3. HELP!Comment supprimer des enregistrements de tables jointes
    Par ROOTPARIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/06/2004, 16h41
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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