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

Windows Forms Discussion :

Mise a jour des colonnes


Sujet :

Windows Forms

  1. #1
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut Mise a jour des colonnes
    bonjour,

    En insserant a la table, jai mis un attribut qui s'incremente a 1 par chaque ajout, a la supression d'une ligne les numero reste inchangé, par exemple si je suprime la ligne numero 2, les autre ligne seront pas affectées, pour cela il faut mettre a jour la colone num, jai mis sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    cn1.Open();
                        Text = "SELECT   count(*) FROM formationtab";
                        cmd1 = new OleDbCommand(Text, cn1);
                        MonMax = Int32.Parse(cmd1.ExecuteScalar().ToString());
     
                    for (int i = 0; i < MonMax; i++)
                   { Text = "UPDATE formationtab SET "+"num='"+i+"'" ;
                            cmd1 = new OleDbCommand(Text, cn1);
     
                    }
     
                        dr1 = cmd1.ExecuteReader();
                         dr1.Close();
    il mis ajour que la 1ere ligne!!!
    Merci beaucoup

  2. #2
    Membre régulier
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 96
    Points : 78
    Points
    78
    Par défaut soit un peu plus clair
    peux tu expliquer concretement ce que tu veux faire et surtout à quoi te sert la boucle for(). tel que tu l as présenté là elle me semble ne pas faire grand chose

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Dans ta boucle for, tu ne fait que déclarer ton objet commande. Tu devrais essayer de l'exécuter également donc, dans la boucle après avoir instancier ton objet du devrais faire un cmd1.ExecuteNonReader()

  4. #4
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par GoldenToad Voir le message
    Dans ta boucle for, tu ne fait que déclarer ton objet commande. Tu devrais essayer de l'exécuter également donc, dans la boucle après avoir instancier ton objet du devrais faire un cmd1.ExecuteNonReader()

    Bonjour,
    oui effectivement j'ai essayé
    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
     
     try
                    {   cn1.Open();
                        Text = "SELECT   count(*) FROM formationtab";
                        cmd1 = new OleDbCommand(Text, cn1);
                        MonMax = Int32.Parse(cmd1.ExecuteScalar().ToString());
                        for (int i = 0; i < MonMax; i++)
                        {Text = "UPDATE formationtab SET "+"num='"+i+"'";
                          cmd1 = new OleDbCommand(Text, cn1);}
                          dr1 = cmd1.ExecuteReader();
                         }
     
                    catch (Exception ex)
                    { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
                   cn1.Close();
    Dans la boucle for, je veux mettre ajour toute les lignes dans ma base de donnée, pour cela j'ai pensé a une boucle for, le truc qui me manque c'est de faire une lecture ligne par ligne puis mettre a jour le champ num.
    Merci énormement

  5. #5
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    for (int i = 0; i < MonMax; i++)
    {Text = "UPDATE formationtab SET "+"num='"+i+"'";
    cmd1 = new OleDbCommand(Text, cn1);}
    dr1 = cmd1.ExecuteReader();
    }
    déjà il y a un problème : tu executes un requete "update" sans un "where"
    il va mettre a jour toutes les lignes et c'est surement pas ce que tu veux

  6. #6
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par fally Voir le message
    déjà il y a un problème : tu executes un requete "update" sans un "where"
    il va mettre a jour toutes les lignes et c'est surement pas ce que tu veux
    Oui, exactement, je veux faire des mise a jour ligne par ligne, j'ai pas su quoi mettre dans le where. Je veux récuperer la 1er ligne faire la mise a jour ainsi de suite, est ce que c'est faisable??
    Merci beaucoup

  7. #7
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Au lieu de mettre a jour tous les "num" tu peux commencer a partir du numero qui vient d'etre supprimé, ce sera plus rapide.
    tu fabriques une requete du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int NumSupprimé;
    int compteur = NumSupprimé + 1;
    for (int i = NumSupprimé; i < MonMax; i++)
    {
      Text = "UPDATE formationtab SET num = '"+i+"'"
             +" where num = '"+compteur+"' ";
      cmd1 = new OleDbCommand(Text, cn1);}
      dr1 = cmd1.ExecuteNonQuery();
      compteur++;
    }
    NumSupprimé est le num que tu viens de supprimer et compteur le numéro qui suit le numéro supprimé.
    Quant à MonMax il est égal au nombre de lignes dans ta base
    C'est pas trop ingénieux mais bon

  8. #8
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par fally Voir le message
    Au lieu de mettre a jour tous les "num" tu peux commencer a partir du numero qui vient d'etre supprimé, ce sera plus rapide.
    tu fabriques une requete du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int NumSupprimé;
    int compteur = NumSupprimé + 1;
    for (int i = NumSupprimé; i < MonMax; i++)
    {
      Text = "UPDATE formationtab SET num = '"+i+"'"
             +" where num = '"+compteur+"' ";
      cmd1 = new OleDbCommand(Text, cn1);}
      dr1 = cmd1.ExecuteNonQuery();
      compteur++;
    }
    NumSupprimé est le num que tu viens de supprimer et compteur le numéro qui suit le numéro supprimé.
    Quant à MonMax il est égal au nombre de lignes dans ta base
    C'est pas trop ingénieux mais bon
    Effectivement, ça marche mais juste pour l'avant derniere ligne, quand je supprime la 1ere ligne par exemple il me dit " Violation de la contrainte primary key num",
    Merci beaucoup

  9. #9
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Effectivement, ça marche mais juste pour l'avant derniere ligne, quand je supprime la 1ere ligne par exemple il me dit " Violation de la contrainte primary key num",
    j'ai pas bien compris, explique toi un peu

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pourquoi faire une boucle alors qu'on peut le faire en une seule requête pour tous les éléments...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE maTable SET Num = Num - 1 WHERE Num > monNumeroSupprimé
    Cela dit, je trouve idiot de modifier une clé primaire lors de la suppression d'un élément. C'est contraire à toutes les bonnes pratiques de base de données.

  11. #11
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    essaie alors la methode de SaumonAgile mais tout comme lui je trouve pas bien de modifier une clé (surtout si entre temps cette clé a migré dans d'autres tables)
    bah a toi de voir
    Merci SaumonAgile

  12. #12
    Débutant
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Pourquoi faire une boucle alors qu'on peut le faire en une seule requête pour tous les éléments...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE maTable SET Num = Num - 1 WHERE Num > monNumeroSupprimé
    Cela dit, je trouve idiot de modifier une clé primaire lors de la suppression d'un élément. C'est contraire à toutes les bonnes pratiques de base de données.
    Oui peut etre que c idiot!!! mais javais un pb lord la suppression, danc la fonction delete marche uniquement s'il y'a un chiffre, j'ai essayé un caractére, danc jai a jouté un champ num pour a ssocié a chaque ligne un numero, a la suppression je veux mettre a jour le champ num, merci

  13. #13
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par abbd Voir le message
    javais un pb lord la suppression, danc la fonction delete marche uniquement s'il y'a un chiffre, j'ai essayé un caractére, danc jai a jouté un champ num pour a ssocié a chaque ligne un numero, a la suppression je veux mettre a jour le champ num, merci
    quel problème?

Discussions similaires

  1. [LG]Mise à jour des enregistrements d'un file of char.
    Par jpclabaux dans le forum Langage
    Réponses: 5
    Dernier message: 28/10/2004, 15h28
  2. mise a jours des données sous access
    Par puyopuyo dans le forum ASP
    Réponses: 4
    Dernier message: 25/05/2004, 13h46
  3. Mises à jour des paquetages en mode console
    Par Memnoch31 dans le forum Debian
    Réponses: 6
    Dernier message: 16/05/2004, 17h30
  4. [] [Install] Problème de mise à jour des dll
    Par pepper dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 23/01/2003, 23h34

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