Afficher le dernier enregistrement dans Datagridview

Romys - 23 mai 2017 à 21:28 - Dernière réponse : Whismeril 10601 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention
- 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.
Afficher la suite 

1 réponse

Répondre au sujet
Whismeril 10601 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention - 24 mai 2017 à 22:04
0
Utile
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.
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.