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 :

Vérifier l’existence d'un objet [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut Vérifier l’existence d'un objet
    salam

    pour manipuler des table j'ai créer des procédures de ce genre :
    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
     
    private void tableordreproduction(object sender, EventArgs e)
            {
     
     
     
                    datasetproduction.Clear();
                    ordre_production.SelectCommand = new OleDbCommand();
                    ordre_production.SelectCommand.Connection = Connectionproduction;
                    ordre_production.SelectCommand.CommandText = "SELECT ordre_production.nop, ordre_production.achevement_op, ordre_production.preorite, ordre_production.cleproduit FROM ordre_production WHERE (((ordre_production.achevement_op)=No)) ORDER BY ordre_production.preorite;";
                    ordre_production.SelectCommand.CommandType = CommandType.Text;
                    Connectionproduction.Open();
                    ordre_production.Fill(datasetproduction, "ordre_production");
                    Connectionproduction.Close();
                    gridop.DataSource = datasetproduction;
                    gridop.DataMember = "ordre_production";
                }
            }
    le problème c'est qu'a chaque fois que j'ouvre une table tous le autre ce vide a cause de datasetproduction.Clear();
    que je suis obliger de le mettre pour vider a chaque fois ma table pour ne pas me retrouver avec une table avec mille doublons.

    pour remédier a ça j'ai penser a Vérifier l’existence de ma table : si elle existe je vide ma table pour la remplir a nouveau .

    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
    private void tableordreproduction(object sender, EventArgs e)
            {
     
                if (datasetproduction.Tables["ordre_production"] == null)//si la table existe
                {
     
                    datasetproduction.Tables["ordre_production"].Clear();//vider la table
                    ordre_production.SelectCommand = new OleDbCommand();
                    ordre_production.SelectCommand.Connection = Connectionproduction;
                    ordre_production.SelectCommand.CommandText = "SELECT ordre_production.nop, ordre_production.achevement_op, ordre_production.preorite, ordre_production.cleproduit FROM ordre_production WHERE (((ordre_production.achevement_op)=No)) ORDER BY ordre_production.preorite;";
                    ordre_production.SelectCommand.CommandType = CommandType.Text;
                    Connectionproduction.Open();
                    ordre_production.Fill(datasetproduction, "ordre_production");
                    Connectionproduction.Close();
                    gridop.DataSource = datasetproduction;
                    gridop.DataMember = "ordre_production";
                }
            }
    mais bon ça n'a pas marcher puisque j'ai eu le droit a une erreur , (problème d'assignation) .

    merci d'avance.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Luxembourg

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Par défaut
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datasetproduction.Tables.Count == 0
    Au lieu d'utiliser le null.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    ça marche pas puisque j'ai plusieurs tables , ce que je veut c'est vider une table précise puisque le compte il peut être supérieur a 0 mais le t'able que je veut créer n'existe pas encore.

    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Dans ta solution, je n'arrive pas à comprendre pourquoi tu cherches à faire ceci :

    Citation Envoyé par adelcrb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void tableordreproduction(object sender, EventArgs e)
            {
     
                if (datasetproduction.Tables["ordre_production"] == null)//si la table existe
                {
     
                    datasetproduction.Tables["ordre_production"].Clear();//vider la table
    ...
    Si "datasetproduction.Tables["ordre_production"] " vaut null, c'est obligé que ça plante dans ce cas...

    N'était-ce pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void tableordreproduction(object sender, EventArgs e)
            {
    
                if (datasetproduction.Tables["ordre_production"] != null)//si la table existe
                {
                    
                    datasetproduction.Tables["ordre_production"].Clear();//vider la table
    ...
    que tu voulais faire?

  5. #5
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    +1 avec Ph_Gr, dans ton code de départ, tu testes si ton objet n'est pas initialisé. Si c'est le cas tu l'utilises -> plantage
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    merci pour la petite remarque , au-faite il fallait faire le teste des deux sens si la table n'existe pas je la crée si par contre elle existe je la vide et je la recrée.

    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
    32
    private void tableordreproduction(object sender, EventArgs e)
            {
     
                datasetproduction.Clear();
     
                if (datasetproduction.Tables["ordre_production"] == null)
                {
                    ordre_production.SelectCommand = new OleDbCommand();
                    ordre_production.SelectCommand.Connection = Connectionproduction;
                    ordre_production.SelectCommand.CommandText = "SELECT ordre_production.nop, ordre_production.achevement_op, ordre_production.preorite, ordre_production.cleproduit FROM ordre_production WHERE (((ordre_production.achevement_op)=No)) ORDER BY ordre_production.preorite;";
                    ordre_production.SelectCommand.CommandType = CommandType.Text;
                    Connectionproduction.Open();
                    ordre_production.Fill(datasetproduction, "ordre_production");
                    Connectionproduction.Close();
                    gridop.DataSource = datasetproduction;
                    gridop.DataMember = "ordre_production";
                }
                else
                {
                    datasetproduction.Tables["ordre_production"].Clear();
                    ordre_production.SelectCommand = new OleDbCommand();
                    ordre_production.SelectCommand.Connection = Connectionproduction;
                    ordre_production.SelectCommand.CommandText = "SELECT ordre_production.nop, ordre_production.achevement_op, ordre_production.preorite, ordre_production.cleproduit FROM ordre_production WHERE (((ordre_production.achevement_op)=No)) ORDER BY ordre_production.preorite;";
                    ordre_production.SelectCommand.CommandType = CommandType.Text;
                    Connectionproduction.Open();
                    ordre_production.Fill(datasetproduction, "ordre_production");
                    Connectionproduction.Close();
                    gridop.DataSource = datasetproduction;
                    gridop.DataMember = "ordre_production";
                }
     
            }

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par adelcrb Voir le message
    merci pour la petite remarque , au-faite il fallait faire le teste des deux sens si la table n'existe pas je la crée si par contre elle existe je la vide et je la recrée.

    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
    32
    private void tableordreproduction(object sender, EventArgs e)
            {
     
                datasetproduction.Clear();
     
                if (datasetproduction.Tables["ordre_production"] == null)
                {
                    ordre_production.SelectCommand = new OleDbCommand();
                    ordre_production.SelectCommand.Connection = Connectionproduction;
                    ordre_production.SelectCommand.CommandText = "SELECT ordre_production.nop, ordre_production.achevement_op, ordre_production.preorite, ordre_production.cleproduit FROM ordre_production WHERE (((ordre_production.achevement_op)=No)) ORDER BY ordre_production.preorite;";
                    ordre_production.SelectCommand.CommandType = CommandType.Text;
                    Connectionproduction.Open();
                    ordre_production.Fill(datasetproduction, "ordre_production");
                    Connectionproduction.Close();
                    gridop.DataSource = datasetproduction;
                    gridop.DataMember = "ordre_production";
                }
                else
                {
                    datasetproduction.Tables["ordre_production"].Clear();
                    ordre_production.SelectCommand = new OleDbCommand();
                    ordre_production.SelectCommand.Connection = Connectionproduction;
                    ordre_production.SelectCommand.CommandText = "SELECT ordre_production.nop, ordre_production.achevement_op, ordre_production.preorite, ordre_production.cleproduit FROM ordre_production WHERE (((ordre_production.achevement_op)=No)) ORDER BY ordre_production.preorite;";
                    ordre_production.SelectCommand.CommandType = CommandType.Text;
                    Connectionproduction.Open();
                    ordre_production.Fill(datasetproduction, "ordre_production");
                    Connectionproduction.Close();
                    gridop.DataSource = datasetproduction;
                    gridop.DataMember = "ordre_production";
                }
     
            }
    Le problème avec ce code c'est que tu vas quand même supprimer toutes des données locales si tu fais appel à "datasetproduction.Clear();" quoi qu'il arrive.

    D'après le code que tu nous montre, "ordre_production" est normalement de type "DbDataAdapter" (ou dérivé bien sûr). Au lieu de t'embêter à faire "Clear" à chaque fois, regarde plutôt la propriété "FillLoadOption" des objets de type "DbDataAdapter". Il me semble que cette option permet d'indiquer la "politique" de remplissage de ton objet DataTable.

    Plus de précisions ici :
    http://msdn.microsoft.com/fr-fr/libr...v=vs.110).aspx

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    ah oui c’était une erreur de copier coller , dans mon code je ne lé pas mis parce-que c'est vrai si je la métrai sa serai parail .

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

Discussions similaires

  1. Vérifier l’existence des objets récemment crées
    Par hajer.d dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 28/09/2014, 23h51
  2. [Débutant] Vérifier l’existence d'un objet dans une List
    Par shaun_the_sheep dans le forum C#
    Réponses: 8
    Dernier message: 15/10/2012, 11h33
  3. Réponses: 5
    Dernier message: 12/01/2012, 16h47
  4. Vérifier l’existence d'une adresse IP sous le réseau
    Par Mariness dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/12/2011, 10h13
  5. [EJB2.0]Vérifier inexistence d'un objet avant de le créer
    Par Invité dans le forum Persistance des données
    Réponses: 2
    Dernier message: 21/04/2008, 10h17

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