none
Problème de mise à jour de la base de donnée RRS feed

  • Question

  • j'utilise Visual studio 2010 ultimate en C# avec une base de donnée SQL

    Je cherche a mettre à jour une table simple dans une forme avec deux ou trois colum. J'ai bien mis un tableadapter, bindingsource sur ma table et rajouté un binding navigator.

    Quand je suis dans l'application tout à l'air de bien fonctionner. Je crée ou je modifie des enregistrements. J'ai ajouté du code pour sauvegarder mes données dans la base de donnée mais rien n'y fait. Quand je regarde ensuite dans ma base de donnée rien n'est modifié.

    J'ai essayé de modifier la propriété "copy to outpu directory" du fichier xsd de définition de la base mais rien n'y fait.

    Ci-joint le code de mise à jour vers la base

    try

    {

     

    this.Validate();

     

    this.clientBindingSource.EndEdit();

     

    this.clientTableAdapter.Update(this.cLEARIO_FacturaDataSet.Client);

     

    MessageBox.Show("Update successful");

    }

     

    catch (System.Exception ex)

    {

     

    MessageBox.Show("Update failed");

    }

     

    Merci de votre aide

    mercredi 6 janvier 2010 00:32

Réponses

  • Merci de vos sugestions.

    J'ai trouvé le problème. Je n'utilisais pas le même dataset entre le binding source et le tableadapter. J'avais affecté le dataset de la forme appelante au bindingsource de la forme que je modifiai.

    Je pense que l'update essayait de modifier la base de donné à partir du bindingsource non utilisé et donc non modifié.

    Merci encore

    Philippe
    • Marqué comme réponse pco78 mercredi 6 janvier 2010 10:32
    mercredi 6 janvier 2010 10:32

Toutes les réponses

  • Bonjour,

    A première vue, votre code semble correcte et par ailleurs il semblerait que vous n'ayez pas de message d'erreur.

    Avez-vous testé si cLEARIO_FacturaDataSet.Client contient bien vos données crées et modifiées (client.rows.count par exemple ou en utilisant un espion pour avoir plus d'informations) ?

    Pouvez-vous contrôler la proriété RowState de vos enregistrements dans la datatable client ou bien en utilisant la méthode HasChange de votre dataset ?

    Enfin, dans le designer de votre dataset, vous pouvez sélectionner votre clientTableAdapter et contrôler la proriété UpdateCommand afin d'identifier un problème potentiel. Cela peut arriver dans le cas d'une modification de la base de données sans remettre à jours dans dataset.

    Même si apparement, vous ne passez dans le catch, je vous conseil d'utiliser ex.Message pour avoir une information plus pertinente de l'echec.


    Bon test,

    Cordialement,

    Mathieu






    Mathieu Francesch Sharplog Engineering http://www.sharplog.fr
    mercredi 6 janvier 2010 09:07
  • J'ai regardé les valeurs de la table et du bindingsource en posant un point d'arrêt après l'update du table adapter.

    J'ai ajouté un enregistrement. Je le vois dans le Bindingsource mais pas dans la table du Dataset. Le nombre de Row est différent entre la table du dataset et le bindingsource.

    Visiblement l'Update n'a pas eu lieu qu'est ce qui peut expliquer cela?

    Une mauvaise configuration du bindingsource?

    Merci de votre aide

    Philippe
    mercredi 6 janvier 2010 09:39
  • Est ce que votre binding source ressemble à ceci ? :

    clientBindingSource.DataSource = cLEARIO_FacturaDataSet;
    clientBindingSource.DataMember = "Client";

    Mathieu

    Mathieu Francesch Sharplog Engineering http://www.sharplog.fr
    • Marqué comme réponse pco78 mercredi 6 janvier 2010 10:27
    • Non marqué comme réponse pco78 mercredi 6 janvier 2010 10:28
    mercredi 6 janvier 2010 09:44
  • Merci de vos sugestions.

    J'ai trouvé le problème. Je n'utilisais pas le même dataset entre le binding source et le tableadapter. J'avais affecté le dataset de la forme appelante au bindingsource de la forme que je modifiai.

    Je pense que l'update essayait de modifier la base de donné à partir du bindingsource non utilisé et donc non modifié.

    Merci encore

    Philippe
    • Marqué comme réponse pco78 mercredi 6 janvier 2010 10:32
    mercredi 6 janvier 2010 10:32