none
Mise à jour d'un Dataset après effacement dans SQL RRS feed

  • Question

  • Bonjour à tous,

    Je vous soumets un petit problème d'utilisation d'un DataSet avec SQL Server. J'utilise C# sous VS2012 et Sql server 2008R2

    J'ai un Dataset qui se mets à jour toutes les 5 secondes et va donc récupérer les données via un SqlDataAdapter et SqlCommand. Lorsque des données sont ajoutées ou modifiées dans SQL, le DataSet se mets à jour sans problème, par contre, si une donnée est effacée dans SQL, le Dataset garde la ligne en mémoire.

    Pourquoi ? Je suppose qu'il manque un paramètre mais je ne trouve rien, ni dans l'aide ni sur les forums.

    Voici mon code:

    private void GetData(string selectCommand, string p_table) {
    if (My_Connect.State == ConnectionState.Closed) { My_Connect.Open();}
    My_Command = new SqlCommand(selectCommand, My_Connect);
    My_Adaptateur = new SqlDataAdapter(My_Command);
    My_Adaptateur.MissingSchemaAction = MissingSchemaAction.AddWithKey;
    My_Adaptateur.FillLoadOption = LoadOption.OverwriteChanges;
    // Lancement de la requete Select
    My_Adaptateur.Fill(My_Dataset, p_table);
    // Mise à jour des sources de données de la Grille
    My_BindingSource.DataSource = My_Dataset;
    My_BindingSource.DataMember = My_Table;
    My_Grille.DataSource = My_BindingSource;
    }
    }

    Merci pour votre aide.


    jeudi 5 juin 2014 06:29

Réponses

Toutes les réponses

  • Bonjour

    Il y a un raison pour ne pas faire un p_table.Clear () ?
    Vous faites des modifications dans votre application sur le DataSet?

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Buldomas84 vendredi 6 juin 2014 09:27
    vendredi 6 juin 2014 08:31
    Modérateur
  • Bonjour et merci d'avoir pris le temps de me lire.

    Effectivement, un p_table.Clear() résoudrai mon problème. Je pense surtout aux performances. S'il y a peu de données, cela va vite, mais si la table est volumineuse, j'ai des doutes sur le résultat. Les modifications ne sont pas forcément faites sur le dataSet mais le plus souvent sur la source (SQL).

    J'ai 25 machines connectées sur le SQL et plusieurs centaines de lignes. Si je lance un Clear toutes les 10 secondes ....

    Au niveau de mon projet, c'est une forme avec une grille et je souhaite suivre les évolutions de ma table en mode dynamique comme je le faisais sous Visual Foxpro avant. Mais je ne sais pas si je peux retrouver la même souplesse. ??


    vendredi 6 juin 2014 08:48
  • Je dirais que c'est plus rapide avec table.Clear () que faire une update surtout si la DataTable est grande.
    L'update doit chercher l'information existent,  et la remplacer ou ajouter selon le cas.

    Bien cordialement ,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 6 juin 2014 09:12
    Modérateur