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

Windows Forms Discussion :

[vb.net] "La référence d'objet n'est pas définie à une instance d'un objet"


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut [vb.net] "La référence d'objet n'est pas définie à une instance d'un objet"
    Bonjour !

    J'ai crée un formulaire qui lit les résultats d'un tableau access, ligne par ligne et n'affichant que ce qui est utile.... Mais inconvénient il y a un message et je n'arrive pas à le résoudre....

    "La référence d'objet n'est pas définie à une instance d'un objet"

    J'ai déja recherché et j'ai trouvé des cas similaires, disons avec la même phrase erreur, mais bon ça ne m'a pas beaucoup aidé...

    Je vais vous donner le code afin de mieux visualiser... (c'est le code qui s'affiche lors du chargement de la page)

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Private Sub Form6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Dim TableInci As New DataTable
            Dim LeDataSet As New DataSet
            Dim i As Integer
            'Gestion des erreurs
            Try
                'Ouverture de la connexion créee
                OleDbConnection2.Open()
                Try
                    OleDbDataAdapter1.Fill(LeDataSet, "Table des incidents")
                    TableInci = LeDataSet.Tables(0)
                    'Table récupérée
                    Try
     
                        Call AfficheIncident()
                        Call majPosition()
     
                    Catch ex As Exception
                        MsgBox(ex.Message)
                    End Try
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            OleDbConnection2.Close()
     
        End Sub
     
     
     
     
     Private Sub AfficheIncident()
     
            Dim ResReq As DataTable
            Dim UnEnreg As DataRow
            Dim LeDataSet As New DataSet
            ResReq = LeDataSet.Tables("Liste des incidents")
     
            UnEnreg = ResReq.Rows(0)
            'Affecter les champs de la base à l’interface
            txt_date.Text = UnEnreg(1)
            txt_num_incident.Text = UnEnreg(0)
            txt_desc_courte.Text = UnEnreg("Description courte")
            txt_desc_longue.Text = UnEnreg("Description (Dernière mise à jour)" & "Description (Historique)")
     
        End Sub
     
     
     
    Private Sub majPosition()
     
            Dim LeDataSet As New DataSet
            Dim imax, icur As Integer
            imax = Me.BindingContext(LeDataSet, "Query4").Count
            If imax = 0 Then
                affPos.Text = "(0)"
            Else
                icur = Me.BindingContext(LeDataSet, "Query4").Position + 1
                affPos.Text = icur.ToString & " / " & imax.ToString
            End If
     
        End Sub
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    Ou est ce qu'elle apparait ton erreur?

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Par défaut
    tu peux nous dire à quel se passe l'erreur ?
    à quelle ligne?

    ce sera plus simple

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Par défaut
    oups, même question laChips...

  5. #5
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Bon je suis pas un VBiste, mais je dirais que tu essaie de remplir une table d'un dataset qui n'a pas été défini.

    Tu fais un

    Dim LeDataSet

    puis plus bas tu fais un

    ...Fill(LeDataSet,"Table des incidents")

    Mais cette table n'existe pas dans ton dataset...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Par défaut
    je pense que le message d'erreur serait si c'était le nom de la table qui n'est pas correct.

    Il y a, à mon avis, quelque part un objet qui n'est pas instancié

  7. #7
    Membre éclairé Avatar de lou87
    Profil pro
    Inscrit en
    Février 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 368
    Par défaut
    L'erreur se fait lorsque ma page se charge et il n'y a pas de débugage donc je ne peux pas vous indiquer quel ligne cause problème...

    Mais bon en faisant "joujou", il se passe que le message s'affiche entre les lignes orange :

    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
    Private Sub AfficheIncident()
     
            Dim ResReq As DataTable
            Dim UnEnreg As DataRow
            Dim LeDataSet As New DataSet
            ResReq = LeDataSet.Tables("Liste des incidents")
     
            UnEnreg = ResReq.Rows(0)
            'Affecter les champs de la base à l’interface
            txt_date.Text = UnEnreg(1)        
            txt_num_incident.Text = UnEnreg(0)
            txt_desc_courte.Text = UnEnreg("Description courte")
            txt_desc_longue.Text = UnEnreg("Description (Dernière mise à jour)" & "Description (Historique)")
     
        End Sub

  8. #8
    Membre expérimenté
    Avatar de Hatchepsout
    Inscrit en
    Octobre 2006
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 170
    Par défaut
    Citation Envoyé par lou87

    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
    Private Sub AfficheIncident()
     
            Dim ResReq As DataTable
            Dim UnEnreg As DataRow
            Dim LeDataSet As New DataSet
            ResReq = LeDataSet.Tables("Liste des incidents")
     
            UnEnreg = ResReq.Rows(0)
            'Affecter les champs de la base à l’interface
            txt_date.Text = UnEnreg(1)        
            txt_num_incident.Text = UnEnreg(0)
            txt_desc_courte.Text = UnEnreg("Description courte")
            txt_desc_longue.Text = UnEnreg("Description (Dernière mise à jour)" & "Description (Historique)")
     
        End Sub
    1)verifier si ta table "Liste des incidents" est bien celle qui existe dans ta base de donneés(verifier son nom lettre par lettre)

    ou bien
    2) ta datatable Nécessite un NEW.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Par défaut
    2) ta datatable Nécessite un NEW.
    il n'y a pas besoin de new pour la datatable puisqu'elle est instanciée au moment où on lui affecte la datatable du dataset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResReq = LeDataSet.Tables("Liste des incidents")
    Je persiste à dire que :

    premièrement , le dataset n'est pas correctement rempli dans le page_load.

    deuxièmement , il faut utiliser ce même dataset dans la procédure "AfficheIncident()" .

    Il est néanmoins possible qu'il y ait aussi une erreur au niveau du nom de la table mais alors le message d'erreur serait différent, je pense qu'on aurait quelque chose du genre :
    the table does not belong to dataset ...

  10. #10
    Membre expérimenté Avatar de More
    Inscrit en
    Janvier 2007
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2007
    Messages : 252
    Par défaut


    voici un code qui remplit un dataset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
           Try
                OleDbConnection.Open()
                OleDbCommand.Connection = con
                OleDbCommand.CommandText = "select champ from table"
                OleDbDataAdapter.SelectCommand = OleDbCommand
                OleDbDataAdapter.Fill(DataSet, "liste")
                OleDbConnection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
                OleDbConnection.Close()
            Finally
                OleDbConnection.Close()
            End Try
    bonne Chance

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Par défaut
    2 choses à dire :

    d'abord

    dans le page_load, je pense , comme l'indique More , que ton code qui remplit ton dataset n'est pas correct, tu ne lui précises pas de commande select donc il ne sait pas trop avec quoi remplir la table.

    et ensuite,

    tu re déclares un nouveau dataset dans ta procédure : "AfficheIncident()"

    donc, ce n'est pas bon non plus.

    tu dois utiliser le même que celui tu veux remplir dans le page load.

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 270
    Par défaut
    et aussi un petit conseil:

    Il vaut mieux éviter les blancs et les accents dans les noms de table et de champs .

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/11/2013, 10h24
  2. Réponses: 2
    Dernier message: 01/08/2013, 15h40
  3. Réponses: 21
    Dernier message: 30/12/2010, 13h33
  4. Réponses: 8
    Dernier message: 04/06/2007, 16h20
  5. Réponses: 8
    Dernier message: 11/07/2006, 17h27

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