Afficher le dernier enregistrement dans Datagridview

Romys - Modifié le 23 mai 2017 à 21:52
Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 - 24 mai 2017 à 22:04
Bonjour à tous,
j'ai une application de sauvegarde de base de données. je rencontre un problème souhaite que vous m'aidiez.
Au fait, je ne dois concerver que la dernière sauvegarde. Comment ca fonctionne:
1-Au lancement, l'appli affiche dans un datagrid toutes les bases de données
2-on coche la BDD à sauvegarder et on choisit le repertoir de sauvegarde puis on enregiste.
3-sur l'ecran de validation, on valide. Un autre datagrid apparait avec toutes les bases de donnees suavegardées avec leur liens.
Mon probleme est qu'il affiche les unes apres les autres, sans ecraser d'où une liste de plus de 200 BDD deja.
Voilà quelque morceaux de codes


try
            {
               
                for (int i = 0; i < gridView1.RowCount; i++)
                {
                    if (gridView1.GetDataRow(i)["COCHER"].ToString() == "O")
                    {                       
                        List<clsChemin_> ch = new List<clsChemin_>();
                        XmlSerializer serial_ch = new XmlSerializer(typeof(List<clsChemin_>));
                        using (FileStream fs_ch = new FileStream(Environment.CurrentDirectory + "\\chemin_.xml", FileMode.Open, FileAccess.Read))
                        {
                            ch = serial_ch.Deserialize(fs_ch) as List<clsChemin_>;
                        }
                                DataSet dt = new DataSet();
                                dt = clsSauvegardeManager.Instance.pvgChargerParametreSauvegarde_();

                        for (int K = 0; K < dt.Tables[0].Rows.Count; K++)//Afficher uniquement les derniers enregistrements de chaque BDD
                        {
                            string chem = ch[0].nomchemin.ToString();
                            this.vapBaseDeDonnee = gridView1.GetDataRow(i)["NAME"].ToString();

                            dt.Tables[0].Rows[K]["PS_NOMBASE"].ToString();


                                if (this.vapBaseDeDonnee == dt.Tables[0].Rows[K]["PS_NOMBASE"].ToString())
                                {
                                    string vlpFichier = clsSauvegardeManager.Instance.pvgGenererFichierSauvegarde_verifi(this.vapBaseDeDonnee, dt.Tables[0].Rows[K]["PS_CHEMIN"].ToString());
                                    if (vlpFichier != "")
                                    {
                                        clsSauvegardeManager.Instance.pvgSauvegarder(this.vapBaseDeDonnee, vlpFichier);
                                        SAUVEGARDE.Tables[0].Rows.Add(SAUVEGARDE.Tables[0].Rows.Count, DateTime.Now, this.vapBaseDeDonnee, vlpFichier, "O");
                                        clsSauvegardeManager.Instance.pvpChargerGrilleSauvegarde(SAUVEGARDE, gridView2);
                                        clsSauvegardeManager.Instance.pvgEnregistrerDataSetSauvegarde(SAUVEGARDE);
                                    }
                                }
                        }
                    }
                }
            }



public void pvgSauvegarder(string vppDataBase, string vppFichier)
        {
            if(vppFichier=="")
                vppFichier = pvgGenererFichierSauvegarde(vppDataBase, _REPERTOIRESAUVEGARDE);
            clsSauvegardeDAL.Instance.pvgSauvegarder(vppDataBase, vppFichier);
       }




public void pvgSauvegarder(string vppDataBase ,  string vppFichier)
        {
            this.vapRequete = "BACKUP DATABASE @DATABASE TO DISK = @FICHIER  WITH FORMAT;" ;
            vapNomParametre = new string[] {"@DATABASE","@FICHIER"};
            vapValeurParametre = new object[] {vppDataBase,vppFichier};
            this.vapCritere = "";
            SqlCommand vppSqlCmd = new SqlCommand(this.vapRequete, clsDonnee.ClasseDonnee.vogObjetConnexionLocal, clsDonnee.ClasseDonnee.vogObjetTransactionLocal);
            clsDonnee.ClasseDonnee.pvgMiseAJourBaseDeDonnees(vppSqlCmd, vapNomParametre, vapValeurParametre);
        }




 public void pvgMiseAJourBaseDeDonnees(SqlCommand vppSqlCommand, string[] vppNomParametre, object[] vppValeurParametre)
        {
            try
            {
                if (vppNomParametre != null && vppValeurParametre != null)
                    for (int i = 0; i < vppNomParametre.Length; i++)
                    {
                        vppSqlCommand.Parameters.Add(new SqlParameter(vppNomParametre[i], vppValeurParametre[i]));
                    }
                vppSqlCommand.ExecuteNonQuery();
                vapObjetCommandeLocal = null;
            }
            catch (SqlException SQLEx)
            {
                vapObjetCommandeLocal = null;
                throw SQLEx;
            }
        }


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Whismeril Messages postés 19022 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 avril 2024 656
24 mai 2017 à 22:04
Bonsoir

dans les bouts de codes que tu postes il y a de nombreux objets qui sortent de nulle part, sans contexte pas simple de comprendre à quoi ils servent. A minima un commentaire serait le bienvenu.
D'autant que le seul commentaire existant est plutôt déroutant.
for (int K = 0; K < dt.Tables[0].Rows.Count; K++)//Afficher uniquement les derniers enregistrements de chaque BDD
si c'est seulement les derniers enregistrements pourquoi faire une boucle qui commence à 0 et pas à dt.Tables[0].Rows.Count - 5 par exemple?


Et ça
            catch (SqlException SQLEx)
            {
                vapObjetCommandeLocal = null;
                throw SQLEx;
            }


L'idée du try / catch au départ c'est de faire en sorte que le programme ne plante pas suite à une exception, alors la refaire dans le catch est assez surprenant.
0
Rejoignez-nous