none
Alimenter une table dans une base de données access RRS feed

  • Question

  • Bonjour,

    Je voudrais sauvegarder les éléments d'une collection qui s'appelle "LesLames" et qui contient un certain nombre d'éléments de la classe "Lame" comprenant 18 propriétés diverses.

    Pour cela, je crée d'abord une table vide adéquate (là, ça marche) et ensuite j'alimente ma table. Et c'est là que ça coince. voici mon code :

    Dim NomDeTable As String
            NomDeTable = InputBox("Donner un nom explicite à la configuration")
            Mycommand.CommandText = "SELECT * INTO " & NomDeTable & " FROM TableBase"
            MyConnexion.Open()
            Mycommand.ExecuteNonQuery()
            Dim L As Lame
            For Each L In LesLames
                Mycommand.CommandText = "INSERT INTO " & NomDeTable & " (Numéro, Nom, Nature, Epaisseur, Lambda, EpsilonGauche, EpsilonDroite, CouleurL, CouleurR, StyleR, Peau, NatureP, EpaisseurP, LambdaP, EpsilonInterneP, EpsilonExterneP, EstGaz, EstIsolant) VALUES(" & L.Numéro.ToString & ", " & L.Nom.ToString & ", " & L.Nature & ", " & L.Epaisseur.ToString & ", " & L.Lambda.ToString & ", " & L.EpsilonGauche.ToString & "," & L.EpsilonDroite.ToString & "," & L.CouleurL.ToString & "," & L.CouleurR.ToString & "," & L.StyleR.ToString & "," & L.Peau.ToString & "," & L.NatureP.ToString & "," & L.EPaisseurP.ToString & ", " & L.LambdaP.ToString & ", " & L.EpsilonInterneP.ToString & ", " & L.EpsilonExterneP.ToString & ", " & L.EstGaz.ToString & ", " & L.EstIsolant.ToString & ")"
                Mycommand.ExecuteNonQuery()
            Next
            MyConnexion.Close()

    Le débogeur s'arrête au niveau "for each" avec le message suivant :

    Merci de m'aider.


    Pierre Allemand

    lundi 16 avril 2012 10:06

Réponses

  • Bonjour,

    Vous avez du oublié d'initialiser l'un de vos objets (MyCommand, MyConnexion, ...).

    Pouvez nous dire la ligne dont l'exécution a provoquer l'exception ?

    Cordialement.

    lundi 16 avril 2012 11:57
    Auteur de réponse
  • Bonjour,

    Cette erreur indique qu'un objet n'a pas été initialisé (Nothing) donc le plus simple, lorsque l'erreur survient, est de placer sucessivement le pointeur de la souris sur tous les objets de la ligne (ce qui affiche une "bulle" avec la valeur de l'objet) pour voir celui ou ceux qui affichent "Nothing" comme valeur :

    Mon exemple n'est pas très bon. Dans ce cas précis, se positionner sur L ce qui affichera à côté une interface permettant d'examiner les propriétes de L. Vérifier que l'une d'elle n'est pas "nothing" (par exemple L.CouleurL, L.CouleurR etc... toutes celles qui sont utilisées dans la ligne).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    lundi 16 avril 2012 16:43
    Modérateur

Toutes les réponses

  • Bonjour,

    Vous avez du oublié d'initialiser l'un de vos objets (MyCommand, MyConnexion, ...).

    Pouvez nous dire la ligne dont l'exécution a provoquer l'exception ?

    Cordialement.

    lundi 16 avril 2012 11:57
    Auteur de réponse
  • Salut,

    tu n'as pas oublier une instanciation par hasard ??!!

    Dim L As Lame = New Lame()

    du moins je me base sur les conseil de depanage de ta capture ecran

    et puis avant de donner un nouvel ordre sql a une meme commande efface l'ancien

    faire MyCommand.CommandText=String.Empty ou une autre maniere que tu connat pour effacer un string

    J'ai deja obtenu des erreurs a ce  propos

    Amicalement


    la FOI déplace les montagnes et bien DOTNET les effaces complétement.



    • Modifié mmw01 lundi 16 avril 2012 14:46 Erreur
    lundi 16 avril 2012 12:22
  • Bonjour,

    Vous avez du oublié d'initialiser l'un de vos objets (MyCommand, MyConnexion, ...).

    Pouvez nous dire la ligne dont l'exécution a provoquer l'exception ?

    Cordialement.

    C"est la ligne MyCommand.CommandTexte = etc.

    Pierre Allemand

    lundi 16 avril 2012 13:13
  • L'instanciation (New Lame()) ne change rien au problème.

    "MyCommand.CommandText.clear" n'est pas accepté.


    Pierre Allemand

    lundi 16 avril 2012 13:16
  • Bonjour,

    Cette erreur indique qu'un objet n'a pas été initialisé (Nothing) donc le plus simple, lorsque l'erreur survient, est de placer sucessivement le pointeur de la souris sur tous les objets de la ligne (ce qui affiche une "bulle" avec la valeur de l'objet) pour voir celui ou ceux qui affichent "Nothing" comme valeur :

    Mon exemple n'est pas très bon. Dans ce cas précis, se positionner sur L ce qui affichera à côté une interface permettant d'examiner les propriétes de L. Vérifier que l'une d'elle n'est pas "nothing" (par exemple L.CouleurL, L.CouleurR etc... toutes celles qui sont utilisées dans la ligne).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    lundi 16 avril 2012 16:43
    Modérateur
  • J'ai modifié les champs de ma table en les faisant tous passer à "string"

    J'ai remplacé ma collection LesLames par un tableau à 2 dimensions plus simple à manier et surtout plus efficace car je peux repérer la position de chaque lame par son indice (vieux réflexe VB6).

    Bref, j'ai fait disparaître les objets ... Et tous mes ennuis ont disparu... (Vive la POO)

    Merci de votre aide.


    Pierre Allemand

    mardi 17 avril 2012 05:03