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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    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 confirmé
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    96
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 96
    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 confirmé
    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
    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
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    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 très 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
    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
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    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 très 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
    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

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, 14h28
  2. mise a jours des données sous access
    Par puyopuyo dans le forum ASP
    Réponses: 4
    Dernier message: 25/05/2004, 12h46
  3. Mises à jour des paquetages en mode console
    Par Memnoch31 dans le forum Debian
    Réponses: 6
    Dernier message: 16/05/2004, 16h30
  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, 22h34

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