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

Accès aux données Discussion :

Accès à une table ACCESS par VB: Problème valeur NULL


Sujet :

Accès aux données

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 34
    Points
    34
    Par défaut Accès à une table ACCESS par VB: Problème valeur NULL
    Bonjour, j'ai un souci pour accéder à une table d'une base de donnés montée sous ACCESS.

    En fait, il se trouve dans cette table je possède des champs vides.
    Dans mon code vb je vois pas comment faire pour renvoyer une valeur NULL dans reader.getstring(1). Pour le moment, voilà ce que je fais et voilà l'erreur qu'il me met:


    Petite précision, c'est une application en développement objet, mais c'est seulement le champ (1) que je veux comparer (ne prêter pas attention aux 'nothing' plus bas). Et le type de données est bien respecté (j'ai du string dans ma base et je fais un getstring(1).

    Voilà, en espérant une réponse de votre part,
    Merci à tous d'avance...

  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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Il faut vérifier si la valeur est null avant l'appel à GetString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not(.IsDBNull(1)) Then
        Res = .GetString(1)
    End If

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    Merci de ta réponse mais il met toujours un défaut 'InvalidCastException'. Pourtant je respecte bien le type de données (ma zone RESResidence est en texte dans la base et je fais un GetString sous vb et ma variable est de type string aussi)...

    Donc là je ne vois pas du tout d'où cela peut venir...
    Je suis un peu dans le brouillard...


  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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Bizarre... tu es sûr que RESResidence est bien le 2e champ de ton SELECT ? Sinon, plutôt que de passer par l'index, tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not(.IsDBNull(.GetOrdinal("RESResidence"))) Then
        Res = .GetString(.GetOrdinal("RESResidence"))
    End If

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    ça ne fonctionne toujours pas...

    Franchement je sais pas du tout d'où cela peut provenir.

  6. #6
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    sur quelle instruction ça plante ? le GetString ?
    Et si tu fais GetValue à la place de GetString, tu récupères quoi comme valeur ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    voilà ce qu'il me met:

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    Je crois avoir trouvé la solution. En fait, mon code donne ceci maintenant:
    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
            With Reader
                Do While .Read
                    Dim Res As String
     
                    If IsDBNull(.Item(1)) Then
                        Res = ""
                    Else
                        Res = .GetString(1)
                    End If
                    '          0            1            2              3             4          5
                    'SELECT RESNumero, RESResidence, RESAdresse, RESInformation, REScodeVIL, REScodeCLI
                    'FROM Residence
                    o_Residence.Add(New Residence(.GetInt32(0), Res, Nothing, Nothing, Nothing, Nothing))
                Loop
            End With
    Avec ça, les données passent bien, je suppose que ça doit fonctionner comme cela.
    Merci de votre aide en tout cas.

  9. #9
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Bizarre, ça aurait du marcher avec le code que je t'avais indiqué...
    Tu es sûr que tu avais bien fait .IsDBNull(1) et pas IsDBNull(1) ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/06/2014, 20h18
  2. Réponses: 6
    Dernier message: 20/01/2012, 09h58
  3. Pb Choix d'accés à une table access 2007
    Par JesusHansHuberVorme dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/07/2010, 09h05
  4. Créer une table accessible par tous
    Par Wilgard dans le forum Administration
    Réponses: 2
    Dernier message: 19/06/2007, 10h45
  5. Réponses: 6
    Dernier message: 15/05/2006, 17h04

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