IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Changer source DataSet fortement typé


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut Changer source DataSet fortement typé
    Salut à toutes et à tous,

    Je suis un peu surpris de ne pas trouver la réponse sur le forum.
    Je me demande si ce ne serait pas moi qui cherche mal, auquel cas, je vous remercie de m'aiguiller et de m'indiquer comment chercher correctement afin de trouver ce dont j'ai besoin.

    Pour un projet je dois ramener les données d'une base de donnée Access.
    Je voulais faire un DataSet fortement typé dans Visual Studio 2005 via Toolbox\Data\DataSet.
    toutefois, à l'ouverture de l'outil, je dois définir la base de données à partir de laquelle je veux extraire les données.
    Pour le montage pas de problème, il me faut bien une source pour monter le tout.
    Toutefois, à l'utilisation, l'utilisateur devra pouvoir choisir (via un OpenFileDialog) la base de données qu'il veut ouvrir. En effet, plusieurs bases de données ont exactement la même structure et il faudrait en ouvrir une ou une autre selon les besoins.

    Je ne trouve pas comment faire pour pour pouvoir modifier les connecion string de l'accès à la base de données puisque, si je vois bien, à la construction du DataSet via l'outil TableAdapter configuration Wizard, la connection string est placée comme settings application et pas comme settings user, d'où mon problème puisqu'un setting application ne peut pas être modifié une fois l'application ouverte (ou peut-être même compilée, je ne sais pas).

    Dans le TableAdapter configuration Wizard une option permet de ne pas sauver la connexion string dans la configuration d'application. J'ai pensé qu'en ne la sauvant pas je pourrais la modifier pour changer la base de donnée, mais je ne trouve pas comment je dois faire pour mettre les TableAdapter à jour afin de de modifier la connexionstring. Je trouve bien la classe du TableAdapter qui représente la connexion et les command de celle-ci, mais je ne trouve pas comment accéder au .Connection.ConnectionString de celle-ci.

    Merci de votre aide
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut
    J'ai fini par trouver.

    Pour ceux que cela intéresse :

    Créer le DataSet fortement typé via un XSD en prenant une base de donnée "cobaye".
    Le truc ici est à la création des TableAdapter et des Query. On choisit la base de données qui sert à monter le schéma, et on fait bien attention de décocher l'option "Do you want to save the connexion string to the application configuration file ?" au second tableau.

    Voici le code que j'ai utilisé pour alimenter le DataSet à partir d'une base de donnée sélectionnée par un OpenFileDialog (ATTENTION : le schéma du DataSet n'est pas intégralement trouvé dans la base de données, son alimentation plantera. Il est donc judicieux de faire une série de tests ou d'utiliser un try catch)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
                OpenFileDialog openFile = new OpenFileDialog();
                openFile.CheckFileExists = true;
                openFile.CheckPathExists = true;
                openFile.Multiselect = false;
                openFile.Title = "Sélection Base de donnée parcelles";
                openFile.DefaultExt = "MDB";
                openFile.Filter = "Base de donnée dessin (*.MDB)|*.MDB|Tous les fichiers (*.*)|*.*";
                DialogResult result = openFile.ShowDialog();
                if (result == DialogResult.OK)
                {
                    TypedDataSetTableAdapters.ParcelleTableAdapter ParcelleTableAdapter = new TypedDataSetTableAdapters.ParcelleTableAdapter();
                    TypedDataSetTableAdapters.LigneTableAdapter LigneTableAdapter = new TypedDataSetTableAdapters.LigneTableAdapter();
                    TypedDataSetTableAdapters.PointTableAdapter PointTableAdapter = new TypedDataSetTableAdapters.PointTableAdapter();
                    TypedDataSetTableAdapters.PCodeTableAdapter PCodeTableAdapter = new TypedDataSetTableAdapters.PCodeTableAdapter();
     
                    OleDbConnectionStringBuilder oleDbConnectionStringBuilder = new OleDbConnectionStringBuilder();
                    oleDbConnectionStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    oleDbConnectionStringBuilder.DataSource = @openFile.FileName;
     
                    ParcelleTableAdapter.Connection.ConnectionString = oleDbConnectionStringBuilder.ConnectionString;
                    LigneTableAdapter.Connection.ConnectionString = oleDbConnectionStringBuilder.ConnectionString;
                    PointTableAdapter.Connection.ConnectionString = oleDbConnectionStringBuilder.ConnectionString;
                    PCodeTableAdapter.Connection.ConnectionString = oleDbConnectionStringBuilder.ConnectionString;
     
                    TypedDataSet typedDataSet = new TypedDataSet();
                    ParcelleTableAdapter.Fill(typedDataSet.Parcelle);
                    LigneTableAdapter.Fill(typedDataSet.Ligne);
                    PointTableAdapter.Fill(typedDataSet.Point);
                    PCodeTableAdapter.Fill(typedDataSet.PCode);
    }
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Methode find sur Dataset fortement typé
    Par stdebordeau dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/05/2009, 18h41
  2. Utilisation du dataset fortement typé
    Par s.n.a.f.u dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 06/04/2007, 19h39
  3. Pb avec un dataset fortement typé
    Par chris81 dans le forum Windows Forms
    Réponses: 14
    Dernier message: 05/03/2007, 14h29
  4. [ADO.net][VB.net] DataSet fortement typé à la main
    Par RaelRiaK dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/01/2007, 09h48
  5. Réponses: 2
    Dernier message: 19/09/2006, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo