Non remise à jour des datas avec Fill

Résolu
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008 - 4 juin 2006 à 11:48
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008 - 5 juin 2006 à 10:24
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

ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
5 juin 2006 à 10:24
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
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
4 juin 2006 à 12:56
à 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 ^^)
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
4 juin 2006 à 13:22
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
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
4 juin 2006 à 14:04
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
5 juin 2006 à 09:48
Non ca ne change absolument rien, sincerement je ne vois pas ou est le probleme.

duck88
0
Rejoignez-nous