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 :

Effectuer une requete sur un dataset


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut Effectuer une requete sur un dataset
    Bonjour,

    Je suis confronté à un problème qui me semble pourtant évndent: Je voudrais faire une requete sur un dataset.
    En clair
    - j'ai un dataset qui sert de base de donnée mémoire
    - je veux faire une requete du genre "Select * from MaTable where Moinchamp=2" et récuperer le résultat dans une datatable

    Comment faire ? Est-ce au moins possible ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Aurélien19 Voir le message
    - j'ai un dataset qui sert de base de donnée mémoire
    houla, tu t'emballes un peu là
    un DataSet n'a pas grand chose à voir avec une BDD, c'est juste une copie en mémoire des données... tu n'as pas le dixième des fonctionnalités proposées par un vrai SGBD

    Citation Envoyé par Aurélien19 Voir le message
    - je veux faire une requete du genre "Select * from MaTable where Moinchamp=2" et récuperer le résultat dans une datatable

    Comment faire ? Est-ce au moins possible ?
    Pour une requête simple comme ça, c'est possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataRow[] results = MaTable.Select("MonChamp = 2");
    Mais ça te renvoie un tableau de lignes, et non une DataTable (tu peux obtenir une DataTable en passant par une DataView, mais ça devient un peu lourd...)
    De plus, ça ne marche que sur une requête simple sur une seule table : impossible de faire une jointure. Tu peux jouer un peu sur les relations entre les DataTable, mais c'est assez limité.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut
    Merci pour la réponse!

    Citation Envoyé par tomlev Voir le message
    houla, tu t'emballes un peu là
    un DataSet n'a pas grand chose à voir avec une BDD, c'est juste une copie en mémoire des données... tu n'as pas le dixième des fonctionnalités proposées par un vrai SGBD
    Oui, effectivement! Et je ne compte pas remplacer un vrai SGBD!
    En fait, je cherche juste à extraire partiellement des données depuis une datatable d'un dataset vers une autre table.
    En fait, j'utilise le dataset comme buffer, pour éviter l'accès direct à ma table dans la vrai base de données (pour améliorer les performances dans un cas bien précis)


    Pour une requête simple comme ça, c'est possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataRow[] results = MaTable.Select("MonChamp = 2");
    Mais ça te renvoie un tableau de lignes, et non une DataTable (tu peux obtenir une DataTable en passant par une DataView, mais ça devient un peu lourd...)
    De plus, ça ne marche que sur une requête simple sur une seule table : impossible de faire une jointure. Tu peux jouer un peu sur les relations entre les DataTable, mais c'est assez limité.
    Effectivement, je suis arrivé à récuperer la collection de DataRow, mais impossible de la mettre dans une nouvelle datatable : j'ai une erreur lors de l'exécution, me disant que les lignes appartiennent déjà à une datatable!
    Pour la dataview, j'y ai pensé, mais peut on copier le résultat du dataview dan une datatable ? Et si oui, comment ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Aurélien19 Voir le message
    Pour la dataview, j'y ai pensé, mais peut on copier le résultat du dataview dan une datatable ? Et si oui, comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataView view = new DataView(MaTable, "MonChamp = 2", null, DataViewRowState.CurrentRows);
    DataTable results = view.ToTable();

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataView view = new DataView(MaTable, "MonChamp = 2", null, DataViewRowState.CurrentRows);
    DataTable results = view.ToTable();
    Merci, ca correspond exactement à ce que je cherche! Je ne connaissait pas la méthode...
    J'essaye ça demain matin!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 22
    Par défaut
    Merci, ca marche !

    Par contre, il me reste un problème : j'utilise un dataset typé, et je n'arrive pas à ressortir mes données dans une table du même type que celle d'origine.
    En clair, j'essaye le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DS_PERSO.TABLE_PERSO TableSource;
    (...)
    DataView view = new DataView(TableSource, "MonChamp = 2", null, DataViewRowState.CurrentRows);
    DS_PERSO.TABLE_PERSO TableDest = ((DS_PERSO.TABLE_PERSO)view.ToTable());
    je me retrouve avec l'erreur suivante :
    "Impossible d'effectuer un cast d'un objet de type 'System.Data.DataTable' en type 'TABLE_PERSO'."

    Est ce que je fais bien le cast au bon endroit ? Ou est ce que je dois faire ma vue autrement (vue typée?) ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/11/2012, 02h45
  2. Exécution d'une requete sur un DataSet
    Par Nico_stras dans le forum C#
    Réponses: 2
    Dernier message: 01/09/2007, 09h43
  3. une requete effectuant une recherche sur tous les champs
    Par raynor911 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 15h06
  4. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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