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

VBA Access Discussion :

DAO vers ADO: Champ multi-valeurs [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut DAO vers ADO: Champ multi-valeurs
    Bonjour,

    Je travaille depuis quelque temps sur les bases de données Access et notamment sur l'accès de ces bases depuis d'autres applications comme Excel ou Word.
    Seulement il existe deux protocoles afin d'accéder à ces données: DAO (ancien) et ADO (récent). Microsoft recommande d'utiliser ADO, ce qui est compréhensible!

    Donc j'ai lancé mon projet avec ADO! Je note également que j'utilise Office 2010.
    Version 2010 qui pourvoit Access de traiter les champs "Multi-valeurs". Malheureusement c'est là que je sèche!

    Je sais écrire le code en DAO mais je n'arrive pas à le migrer vers ADO.
    J'ai même cru lire que ADO ne traite pas ces champs multi-valeurs.

    Voici le code:

    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
        Dim db As DAO.Database
        Set db = DBEngine.OpenDatabase(MyLink)
     
        Dim rstclient As DAO.Recordset
        Set rstclient = db.OpenRecordset("CHANTIERS")
     
        Dim rstchild As DAO.Recordset
     
        Do Until rstclient.EOF
             Set rstchild = rstclient("MAITRE D'OUVRAGE").Value   
                  Do Until rstchild.EOF
                       MsgBox (rstchild(0))
                       rstchild.MoveNext
                  Loop     
             rstclient.MoveNext
        Loop
     
        rstchild.Close
        rstclient.Close
        db.Close
    Le code lancé depuis Word se connecte à la base de donnée de lien "MyLink", puis se connecte à la table "CHANTIERS".
    On boucle sur tous les enregistrements dans le champ "MAITRE D'OUVRAGE" et sur chaque enregistrement, on boucle sur les valeurs "Enfant" dites Multi-valeurs.

    Est-il possible d'avoir se code en ADO?

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 211
    Billets dans le blog
    48
    Par défaut
    bonjour,

    apparemment avec ADO, on ne peut pas

  3. #3
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut
    Bonjour f-leb,

    Ta réponse suscite en moi beaucoup d'autres questions!
    En effet Les champs multivalués sont gérés par DAO, mais cela débouche sur d'autres problématiques!

    I) Est-ce que les champs multivalués persisteront à l'avenir?
    I-1) Si oui, faut-il reconditionner le code de mon projet ADO vers DAO quitte à "régresser"?
    I-1-a) Est-ce que DAO n'est pas voué à disparaitre?
    I-2) Si non, quelle alternative technique peut pallier aux champs multivalués?
    II) J'ai trouvé un lien, sur lequel le problème serait réglé. Dans ce code, le provider est "MSDataShape", est-ce pour quelque chose!?
    III) En définitive, suivant la direction de Microsoft, que faut-il préférer pour le futur, DAO ou ADO?

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 211
    Billets dans le blog
    48
    Par défaut
    I) Est-ce que les champs multivalués persisteront à l'avenir?
    Créés pour la version 2007, ils sont toujours présents dans la version 2010 et aussi dans la version 2013 (il me semble, je n'ai pas cette version).

    I-1) Si oui, faut-il reconditionner le code de mon projet ADO vers DAO quitte à "régresser"?

    I-1-a) Est-ce que DAO n'est pas voué à disparaitre?
    éternelle question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     I-2) Si non, quelle alternative technique peut pallier aux champs multivalués?
    Hé bien on fait comme on faisait avant, une bonne table de jonction déduite de toute association "plusieurs à plusieurs".

    II) J'ai trouvé un lien, sur lequel le problème serait réglé. Dans ce code, le provider est "MSDataShape", est-ce pour quelque chose!?
    je doute que ce provider pour SQL server ou Oracle dans une discussion qui date de 2002 ait un quelconque rapport avec les champs multivalués d'Access apparus en 2007

  5. #5
    Membre averti
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut
    Salut f-leb,

    Finalement j'opte pour la création de solutions dans les deux protocoles!
    Dans un premier temps je travaillerai avec DAO et j’attends de voir l'évolution des choses.

    Merci de t'être penché sur ce problème.

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

Discussions similaires

  1. [AC-2010] UPDATE champ multi-valeurs
    Par laznic23 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 08/10/2012, 09h58
  2. [AC-2010] Utilisation d'un champ multi-valeurs vers Word
    Par yclaf dans le forum Access
    Réponses: 13
    Dernier message: 28/07/2011, 19h31
  3. Migration DAO vers ADO
    Par PMAR dans le forum Access
    Réponses: 2
    Dernier message: 15/03/2010, 15h51
  4. Champs multi valeurs => tables
    Par Kloun dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2007, 11h43
  5. interet modéré du champ multi valeur
    Par programmer_c'est_dur dans le forum Access
    Réponses: 1
    Dernier message: 12/05/2007, 17h17

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