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] Probleme d'affichage entre ListBox/TextBox


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Points : 31
    Points
    31
    Par défaut [VB.NET] Probleme d'affichage entre ListBox/TextBox
    Bonjour ; je suis en train de developper une petite gestion client en VB.NET mais je me heurte a un probleme :

    Mon programme est constituter d'une form ou dedans il y a principalement une listbox qui affichera la liste des client et plusieurs textbox affichant les coordonnée des clients (adresse , ville tel....)
    lorsque je clique sur un nom dans ma listbox cela affiche dans mes textbox mais ces ici que le probleme ce pose :
    J’ai utiliser un dataset pour qu’il contiene les donnée de ma table clients (cest une base access)

    Au demarrage la listbox ce charge du nom et prenom de tout les client classer par ordre alphabetique
    J’arrive a afficher les donnée dans les texte box mais j’ai une erreur si un des champs (par exemple le prenom )est vide voici l’erreur : System.invalidcastexception : cast du type dbnull en type string non valide
    Voila donc lorsque la base de donnée contient des donnée cest bon si une des case na pas de donnée cela plante

    Je vous montre mon code

    Voila pour afficher les coordonnées des clients dans les textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TxtAdress.Text = DtSet.Tables("Clients").Rows(num).Item(1)
    Dtset = dataset et num est egale au numero de la ligne parcouru dans la listbox pour que les informations du client correspond a celui de son nom

    Voila je me demandais si cela etait la bonne methode ou si je me suis planter et que faire pour ne pas afficher que cela plante (j’ai penser a un try catch mais je ne suis pas convaincu)


    Voila je vous est exposer mon probleme je serais ravis que vous m’aidier

    Merci d’avance

    bye

  2. #2
    Membre averti Avatar de guignol
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 339
    Points
    339
    Par défaut
    Tu as plusieurs solution : déjà, fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TxtAdress.Text = DtSet.Tables("Clients").Rows(num).Item(1).toString()
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TxtAdress.Text = DtSet.Tables("Clients").Rows(num).Item(1)
    Tu peux faire une fonction getValue(DtSet.Tables("Clients").Rows(num).Item(1)) qui retourne un String en fonction des valeurs rencontrées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private function getValue(byval r as DataRows) as string
    dim s as string
    try
     s=r.toString()
    catch ex as NullReferenceException
    return ""
    end try
    end sub
    end function
    Je pense qu'il va falloir rajouter également un test pour vérifier que la table a des "rows" (hé oui, sinon ton ...Row(num) va planter comme un porc).

  3. #3
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    salut et bienvenue

    ...tout les client classer par ordre alphabetique...
    Le dataset contient ces enregistrements deja classes? ou tu fais un tri manuellement

    A mon avis, le plus simple, si tu n'as pas un besoin strategique du Null dans tes colonnes de base de donnee: Dans access mets une valeur par defaut "" chaine vide pour les champs texte, ca resoudera ton pb sans que tu aies a modifier ton code.

    Voila pour afficher les coordonnées des clients dans les textbox

    Code:
    TxtAdress.Text = DtSet.Tables("Clients").Rows(num).Item(1)
    Il y a mieux comme methode: le databinding
    TxtAdress.DataBindings.Add("Text",DtSet,"Clients")

    tu trouveras un tutoriel sur les controles dependants sur ce site:
    http://dotnet.developpez.com/

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Points : 31
    Points
    31
    Par défaut Merci
    j'ai utiliser les champs "" dans access et ca marche sans modifier le code
    merci a tous
    bye et bonne journée


    [Tag
    [Résolu] corrigé par freegreg]
    [Pensez à utiliser le bouton ]

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/09/2007, 16h02
  2. [C# 2.0] probleme d'affichage de listbox
    Par maniolo dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/11/2006, 14h20
  3. [vb.net] probleme d'affichage
    Par graphicsxp dans le forum Windows Forms
    Réponses: 14
    Dernier message: 04/11/2005, 13h17
  4. [CR.NET] Probleme d'affichage d'image
    Par ahervieux dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 25/06/2005, 14h06
  5. [VB.NET] Probleme d'affichage de controle
    Par mic56 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2004, 15h03

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