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 :

Trier une table .db paradox


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut Trier une table .db paradox
    Bonjour,

    J'aimerai trier une table paradox. Je vous expose mon problème.
    G une table avec plusieurs enregistrements. Parmis ces enregistrements, plusieurs d'entre eux se répètent (lignes identiques) dus à une erreur. Je voudrait effacer ceux qui se sont répétés de manière anormale et garder le bon initiale.

    Ex :

    pierre | 20 ans | rouge
    nicolas| 22 ans | bleu
    anne | 19 ans | jaune
    anne | 19 ans | jaune
    anne | 19 ans | jaune
    anne | 19 ans | jaune
    anne | 19 ans | jaune
    Franck | 24 ans | noir
    Sylvie |23 ans | rouge

    J'ai dejà essayé en filtrant sur l'element répété puis en utilisant Table1.delete mais c trop lent....

    Si vous avez des solutions rapides..

    Merci

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Regarde ceci ca te donnera une piste de comment faire
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    Je fais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Table1.TableName:=StatusBar1.Panels[0].Text+'\'+Label1.Caption+'\'+'sortick.db';
        Table1.Open;
        Table1.Edit;
        Query1.ExecSQL;

    La table1 est liée au datasource du Query1.
    Je ne sais pas si je dois ouvrir la table1 avant (table à traiter et appelée dans SQL). Ou encore mettre edit pour permettre la modification de celle ci.

  4. #4
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    A l'execution une erreur me dit que les données sont en lecture seule ?????????????

  5. #5
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    SELECT DISTINCT * FROM TABLE1 T1
    G enlevé le Table1.edit et G une autre erreur :

    WHERE EXISTS (SELECT *
    FROM TABLE1 T2
    WHERE T1.Ninc <> T2.Ninc
    AND T1.NoTicket = T2.NoTicket
    AND T1.DatPai = T2.DatPai)

    DELETE
    FROM TABLE1 T
    WHERE T.Ninc < ANY (SELECT Ninc
    FROM TABLE1 T2
    WHERE T.Ninc <> T2.Ninc
    AND T.NoTicket = T2.NoTicket
    AND T.DatPai = T2.DatPai)

    Erreur "utilisation incorrecte du mot clé DELETE" ???

    Pouvez vous m'aider ?

  6. #6
    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 946
    Points
    3 946
    Par défaut
    Citation Envoyé par James64
    A l'execution une erreur me dit que les données sont en lecture seule ?????????????
    Sauf sous une certaine condition, le résultat d'une requête n'est pas modifiable.

    En outre l'utilisation de ExecSQL dans ton code me paraît bizarre. Cette méthode ne permet pas d'obtenir un résultat (il faut utiliser Open avec une requête SELECT) et donc la liaison de la requête avec un TTable n'a pas de sens.

    cdlt

    e-ric

    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."

  7. #7
    Membre actif Avatar de touhami
    Inscrit en
    Avril 2002
    Messages
    327
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 327
    Points : 264
    Points
    264
    Par défaut
    Bonjour,
    tu peut essayer ce qui suit
    1- creer une autre Table avec les meme champs de ta table source
    seulement il faut indexer ta nouvelle table sur les champs que tu ne veux pas avoir des double.
    2- faire un programme qui copie les données de la table ancienne vers la nouvelle table avec verification des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        AncienneTable.close;
        AncienneTable.Open;
        While Not AncienneTable.EOF do
        begin
     
            1-   Fait une requette sql qui verifie que les données n'existe pas
            2-   Si les donnée n'existe pas alors
                  MaNouvelleTable.Insert;
                  Inserer les données;
                  MaNouvelleTable.Post;       
            AncienneTable.Next;
        end;
    Et comme ca tu as une table qui te convient.
    Bon developpement

  8. #8
    Membre du Club Avatar de James64
    Profil pro
    Inscrit en
    Février 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 99
    Points : 49
    Points
    49
    Par défaut
    aller voir sur le forum langage SQL
    Merci

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

Discussions similaires

  1. [Access] Trier une table sur plusieurs critères
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/05/2006, 19h18
  2. trier une table paradox
    Par sabrina22 dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/01/2006, 17h32
  3. Comment trier une table paradox dans un Ttable sur un Dbgrid
    Par amireve dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/12/2005, 19h28
  4. Trier une table avec valeur de differentes unités
    Par Sydaze dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/06/2005, 11h43
  5. [VB.NET] Trier une table de mon DataSet
    Par San Soussy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/03/2005, 17h30

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