Non remise à jour des datas avec Fill [Résolu]

Signaler
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
-
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
-
Bonjour à tous,


Afin de me connecter à une base de données PostgreSQL j'ai créé  :

 un odbcConnection appelé connection_article,

 un odbcDataAdapter appelé adapter_article,

 un dataset appelé le_dataset_article.


Dans ma forme, j'ai un datagraid appelé datagrid_article.

J'ai une classe CFiltre qui me retourne une chaine de condition, selon les parametres que je lui passe.

exemple :


filtre_chaine_contenu("marteau".Text, false, "article_nom")

me retournera la chaine : " and article_nom = '%marteau%' "


J'initialise mes differents parametres dans le constructeur de la Form ceci donne :


public FormArticle(System.Data.Odbc.OdbcConnection connection)

        {

            InitializeComponent();

            filtre = new CFiltre() ;

                 

            requete = "SELECT "public".articles.article_id, "public".articles.article_nom, " +

               
""public".articles.article_description,
"public".articles.artilce_lieu, "public".articles.article_qte, " +

               
""public".fournisseur.four_nom, "public".unite.unite_abr " +

               
"FROM "public".fournisseur_article, "public".fournisseur,
"public".articles, "public".unite " +

               
"WHERE "public".fournisseur_article.four_id =
"public".fournisseur.four_id " +

               
"AND "public".fournisseur_article.article_id =
"public".articles.article_id " +

               
"AND "public".articles.unite_ref = "public".unite.unite_ref";


            adapter_article = new OdbcDataAdapter(requete, connection);


           
this.adapter_article.TableMappings.AddRange(new   
       
          
System.Data.Common.DataTableMapping[] {

            new
System.Data.Common.DataTableMapping("articles", "articles", new
System.Data.Common.DataColumnMapping[] {

                       
new System.Data.Common.DataColumnMapping("article_id", "Identifiant
article"),

                       
new System.Data.Common.DataColumnMapping("article_nom", "Nom"),

                       
new System.Data.Common.DataColumnMapping("article_description",
"Description"),

                       
new System.Data.Common.DataColumnMapping("artilce_lieu", "Lieu"),

                       
new System.Data.Common.DataColumnMapping("article_qte", "Quantité"),

                       
new System.Data.Common.DataColumnMapping("four_nom", "Fournisseur"),

                       
new System.Data.Common.DataColumnMapping("unite_abr", "Unité")})});


            le_dataset_article = new DataSet("dataset_article");

            le_dataset_article.Tables.Add("articles");

            this.datagrid_article.DataSource = le_dataset_article;

            adapter_article.Fill(le_dataset_article, "articles");

            this.dataGrid1.DataMember = "articles";


          }

L'affichage ce deroule correctement, le probleme arrive quand je veux completer completé ma chaine selectcommand.


Sur l'evenement d'un clic sur un bouton dans ma forme j'ai le code suivant :


private void button1_Click(object sender, EventArgs e)

        {

           
adapter_article.SelectCommand.CommandText = requete +   
filtre.filtre_chaine_contenu(this.txt_filtre1.Text, false,
"article_nom") ;

            adapter_article.Fill(le_dataset_article,"articles");

        }

J'ai testé la requete, elle fonctionne, le soucis
c'est que l'affichage dans le datagrid n'est pas mis à jour, ai je
oublié quelque chose ou ai je fait une erreur ?


Merci de votre aide.


Duck88

5 réponses

Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

En fait l'affichage ce fait correctement, la ligne est rajouté a la fin
de la liste, il faut donc faire un dataset.clear() avant.

duck88
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
à priori il te manque le acceptchanges. tu peux soit le faire sur une
datatable (pour ne valider les changement que ds cette table), soit sur
tout le dataset.

tant que tu na pas appelé la méthode acceptchanges, les choses faites
ds ta requetes sont dans le DataSet.DataChanges, et non directmeent ds
le dataset. cest pour ca que ca napparait pas ds le datagrid.


en esperant que ce soit clair (la je suis pas sur de moi ^^)
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Sauf erreur de ma part, la methode DataChanges n'existe pas dans DataSet.

J'ai essayé la methode AcceptChanges ne fonctionne pas non plus.
duck88
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
DataChanges est un dataset de la meme structure que ton dataset de base
qui contient tes modif. le accept changes vide le datachanges et
remplis ton dataset de base. le acceptchanges apres le fill ne met pas
a jour ton datagrid?
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Non ca ne change absolument rien, sincerement je ne vois pas ou est le probleme.

duck88