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 :

supprimer un enregistrement vide dans une table oracle


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Points : 18
    Points
    18
    Par défaut supprimer un enregistrement vide dans une table oracle
    Bonjour,
    j'utilise le code suivant pour insérer des données lues dans un fichier texte dans une table oracle.
    Les champs de la table compose la clé primaire et quand je rencontre une ligne double dans mon fichier j'insère une ligne vide sans insérer de données ce qui fait qu'après j'arrive plus à insérer parceque ne pouvant pas réinsérer une ligne vide à cause de la clé.
    Et dans mon code je suis obligé d'insérer une ligne vide avant d'inséer 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
    13
    14
    15
    16
     
                   Try
                        with Form1.ADOTable1 Do
                          begin
                            // on insère un enregistrement vide
                            Append;
                            // qu'on remplit...
                            FieldValues['ch1'] := 'val1';
                            FieldValues['ch2'] := 'val2';
                            FieldValues['ch3'] := 'val3';
                            Post;
                          end;
                          nb_trait := nb_trait + 1;
                       Except
                            nb_doubl := nb_doubl + 1;
                       End;
    Donc j'ai pensé à supprimer la ligne courante à chaque fois que je suis au niveau de "l'exception" ce qui me permettrait d'insérer une ligne vide à la prochaine itération.
    j'ai pensé à delete ou ExecSQL mais je ne vois pas comment l'uiliser .
    Si quelqu'un a une idée.

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut Re: supprimer un enregistrement vide dans une table oracle
    Citation Envoyé par shurized
    Les champs de la table compose la clé primaire et quand je rencontre une ligne double dans mon fichier j'insère une ligne vide sans insérer de données ce qui fait qu'après j'arrive plus à insérer parceque ne pouvant pas réinsérer une ligne vide à cause de la clé.
    Je ne pense pas que ce soit une bonne idée de prendre tous la combinaison de tous les champs comme clé primaire. Un index auto-incrémenté aurait pu t'épargner tous cà...

    Sinon, tu peux utiliser une requête simple pour effacer les champs vides avant de poster un nouvel enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Delete From NomTable Where ch1=''
    Un cours de SQL interessant en ligne:
    http://sqlpro.developpez.com/

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    un index auto incrémenté n'empêcherait pas l'insertion de double au niveau de ma table , ce que je veux éviter.

    sinon j'ai essayé la requête de suppression et elle ne marche pas il ya erreur à l'exécution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Opérateur ou poitn virgule manquant
    [/[/list]

  4. #4
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par shurized
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Opérateur ou poitn virgule manquant
    Ajoute le point virgule à la fin de la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Delete From NomTable Where ch1='';
    Bien sûr, tu remplaces NomTable par le nom de ta table!

    De plus vérifie toujours tes balises CODE!

    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    évidemment j'ai mis ';' à la fin de la ligne .
    et puis c'est la moindre des choses que de remplacer "Nomtable" par la vraie table.

    ou est ce que je devrai placer la requête SQL par rapport au code que j'ai donné dans mon premier message.

  6. #6
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Essaie avant le Append.
    Tu supprimeras la ligne vide, ensuite tu crées le nouvel enregistrement que tu remplis avec les valeurs...

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    C'est ça que j'ai fait voici le 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
    Try
                         with Form1.ADOTable1 Do
                          begin
                            Delete from le_nom_de_ma_table where ch1=' ';
                            // on insère un enregistrement vide
                            Append;
                            // qu'on remplit...
                            FieldValues['ch1'] := 'val1';
                            FieldValues['ch2'] := 'val2';
                            FieldValues['ch3'] := 'val3';
                            Post;
                          end;
                          nb_trait := nb_trait + 1;
                       Except
                             nb_doubl := nb_doubl + 1;
                       End;
    mais ça ne marche pas

  8. #8
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Lorsque tu insères des lignes vides, tu le fais en remplissant chaque cellule par un espace ou par rien du tout ?

    Ne t'est-il pas possible d'éviter la "technique des lignes vides" en n'insérant rien du tout ? S'il y'a violation de clé, tu n'insères rien du tout et non une ligne vide

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    C'est l' Append qui insère une ligne vide et après si je n'arrive pas à insérer les données à cuase de la clé j'ai une ligne vide dans ma table.

  10. #10
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    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
                   Try 
                        with Form1.ADOTable1 Do 
                          begin 
                            // on insère un enregistrement vide 
                            Append; 
                            // qu'on remplit... 
                            FieldValues['ch1'] := 'val1'; 
                            FieldValues['ch2'] := 'val2'; 
                            FieldValues['ch3'] := 'val3'; 
                            Post; 
                          end; 
                          nb_trait := nb_trait + 1; 
                       Except 
                            Delete; 
                            nb_doubl := nb_doubl + 1; 
                       End;
    ?

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    J'ai déjà fait çà et il y a eu erreur
    ensuite j'ais essayer le code suivant qui ne génère pas d'erreur mais il ne règle pas mon problème.

    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
     Try 
                        with Form1.ADOTable1 Do 
                          begin 
                            // on insère un enregistrement vide 
                            Append; 
                            // qu'on remplit... 
                            FieldValues['ch1'] := 'val1'; 
                            FieldValues['ch2'] := 'val2'; 
                            FieldValues['ch3'] := 'val3'; 
                            If FieldValues['ch1']=' ' Then
                              Delete;
                            Post; 
                          end; 
                          nb_trait := nb_trait + 1; 
                       Except 
                            nb_doubl := nb_doubl + 1; 
                       End;
    je vais essayer de réfléchir merci quand même.

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    J'ai mis le code suivant et çà marche.

    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
     
                          with Form1.ADOTable1 Do
                          begin
                             Try
                               // on insère un enregistrement vide
                              Append;
                              // qu'on remplit...
                              FieldValues['ch1'] := 'val1';
                              FieldValues['ch2'] := 'val2';
                              FieldValues['ch3'] := 'val3';
                              Post; 
                              nb_trait := nb_trait + 1;
                             Except
                              delete;
                              nb_doubl := nb_doubl + 1;
                             End;
                          end;
    la différence avec le code précédent est que la Try ..Except..End; est à l'intérieur du "with Form1.ADOTable1 Do".

    merci Kim Kaiser

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/08/2011, 17h19
  2. Réponses: 2
    Dernier message: 23/05/2011, 07h16
  3. Réponses: 3
    Dernier message: 11/05/2006, 00h27
  4. URGENT - Nombre d'enregistrements différents dans une table
    Par Jeankiki dans le forum Bases de données
    Réponses: 6
    Dernier message: 11/08/2004, 15h51
  5. Update de date vide dans une table
    Par gidebo dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/03/2004, 16h48

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