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

Access Discussion :

Problème avec "FIELD"


Sujet :

Access

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut Problème avec "FIELD"
    Bonjour,

    Ca fait une heure et demie que je tourne en rond, je ne trouve pas la solution, ni d'exemple pour m'en sortir. Pouvez vous me donner un coup de main ?

    Alors voilà: j'ai une table tabPreferences comportant une dizaine de champs et une seule ligne d'enregistrement. Je l'utilise pour stocker des variables qui sont appellées à partir de mes différents modules, formulaires, états.
    (Cette table définie le nom de ma boite, son adresse, etc. Comme nous allons bientôt changer de propriétaires, certaines infos vont changer, les stocker dans une table me facilitera la migration !)

    J'ai écrit une fonction sous vba qui me retourne la valeur demandée:
    Exemple: PreferenceExtraire("NomSociete") et ça me donne: Nom de la société

    Voici le code de cette fonction:
    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
    Private Function PreferenceExtraire(strChamp As String)
        Dim Db As Database
        Dim req As QueryDef
        Dim rs As Recordset
           
        'Composition de la requete SQL
        DoCmd.SetWarnings False
        Set Db = CurrentDb()
        Set req = Db.CreateQueryDef("")
        req.SQL = "SELECT tabPreferences." & strChamp & " FROM tabPreferences;"
        Set rs = req.OpenRecordset
        
    ' C'est ici que ça se gâte ! 
    ' J'aurais aimé le faire avec qu'une seule ligne de code:
    '    PreferenceExtraire = rs!strChamp
    ' mais j'ai un message d'erreur: Elément non trouvé dans cette collection
    ' Alors, j'ai contourné le problème comme suit:
       
       Select Case strChamp
          Case "NomSociete"
          PreferenceExtraire = rs!NomSociete
        
          Case "Initiales"
          PreferenceExtraire = rs!Initiales
          
          Case "AdresseRue1"
          PreferenceExtraire = rs!AdresseRue1
          
          Case "CodePostal"
          PreferenceExtraire = rs!CodePostal
          
          Case "DomaineMail"
          PreferenceExtraire = rs!DomaineMail
        End Select
    
    'Mais ce n'est pas très élégant, surtout que j'ai beaucoup plus de champs à traiter !
    
        req.Close
    
    End Function
    Je vois le problème, le strChamp n'est pas du bon type, ce n'est pas une variable de type string qu'il attend.
    J'ai essayé sans succès
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PreferenceExtraire = rs!Field.name(strChamp)
    et toutes ses variantes syntaxiques.
    Là, je sèche

    Comment éviter tous ces select case ?

    Merci pour votre aide,

    kenavo,

    Jean-Marc

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     PreferenceExtraire =  rs.fields(strChamp)
    Mais pour un cas aussi simple, en une ligne sans DAO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Function PreferenceExtraire(strChamp As String)
    On Error Resume Next
    PreferenceExtraire = DlookUp(strChamp,tabPreferences)
    End Function
    je pense que ça devrait suffire?

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Février 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 198
    Points : 171
    Points
    171
    Par défaut
    Yes !!!! ça marche !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PreferenceExtraire =  rs.fields(strChamp)
    J'avais essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PreferenceExtraire =  rs!fields(strChamp)
    va falloir que j'approfondisse mes connaissances sur la différence entre le . et le !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Function PreferenceExtraire(strChamp As String)
    On Error Resume Next
    PreferenceExtraire = DlookUp(strChamp,"tabPreferences")
    End Function
    C'est effectivement plus simple ! (j'ai rajouté les guillemets sur tabPreference)
    Je m'intéresse à Access depuis un peu plus d'un an, et encore, pas tous les jours... je suis un gros débutant et il y a un tas de fonctions que je ne connais pas ou que je maitrise mal, alors forcément ! il y a parfois des usines à gaz dans mon code !
    En tous cas, j'apprends tous les jours grace à developpez.com !

    Merci pour ton aide,

    kenavo,

    Jean-Marc

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

Discussions similaires

  1. [Shell] Problème avec le Back-quote (ksh)
    Par bob94700 dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2008, 12h45
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  3. [MySQL] Problème avec un double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2007, 14h44

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